저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
오탈자(정오표)
목차
1쇄
42p
주석의 허수부에서 i는 삭제. 허수부는 숫자만 표기합니다.
var num1 complex64 = 1 + 2i // 실수부 1, 허수부 2i
... (생략)
->
var num1 complex64 = 1 + 2i // 실수부 1, 허수부 2
... (생략)
- 서장원님 제보해주셔서 감사합니다.
45p
다음과 같이 uint32에서 uint16으로 변환하는 것처럼 크기가 작은 자료형으로 변환하면 넘치는 값을 버리게 됩니다.
var num1 uint16 = 10
var num2 uint32 = 80000
fmt.Println(num1 + uint16(num2)) // 14474: uint32에서 uint16으로 변환하면서 넘치는 값을 버림
80010이 나와야 하는데 실행을 해보면 14474가 나옵니다. 왜냐하면 uint16에서 저장할 수 있는 가장 큰 숫자는 65535인데 uint32 변수에 저장된 80000을 uint16으로 변환하면서 넘치는 값은 버리기 때문입니다.
int16 -> uint16
int32 -> uint32
61p
표 13-1
=<< | 비트를 왼쪽으로 이동 후 대입 |
=>> | 비트를 오른쪽으로 이동 후 대입 |
->
<<= | 비트를 왼쪽으로 이동 후 대입 |
>>= | 비트를 오른쪽으로 이동 후 대입 |
- eubnara님 제보해주셔서 감사합니다.
95p
d := [...]string{"Maria", "Andrew", "Jonh"} // 초기화할 요소가 3개이며 ...을 사용했으므로
// 배열 크기는 3으로 설정됨
5개 -> 3개
- K. Ko님 제보해주셔서 감사합니다.
99p
c := make([]int, 5) // 슬라이스를 선언할 때 var 키워드, 자료형과 [] 생략
[]
뒤에 int 추가
- Kyungkoo Kang님 제보해주셔서 감사합니다.
214p
var b interface{}
b = 1
fmt.Println(reflect.TypeOf(b)) // int
fmt.Println(reflect.ValueOf(b)) // <int Value>
fmt.Println(reflect.ValueOf(b).Int()) // 1
fmt.Println(reflect.ValueOf(b).Elem()) // 런타임 에러
포인터는 일반 변수와는 다르게 값을 가져오려면 reflect.ValueOf 함수로 값 정보 reflect.Value를 얻어온 뒤 다시 Elem 함수로 값 정보를 가져와야 합니다. 그리고 변수의 타입에 맞는 Int, Float, String 등의 함수로 값을 가져옵니다.
여기서는 int 포인터 a의 값 정보에서 바로 Int 함수로 값을 가져오려면 런타임 에러가 발생합니다. 따라서 Elem 함수로 포인터의 메모리에 저장된 실제 값 정보를 가져와야 합니다.
빈 인터페이스 b에 1을 대입하면 타입 정보는 int이고 값 정보는 int입니다. 따라서 인터페이스의 값을 가져오려면 변수 타입에 맞는 Int, Float, String 등의 함수를 사용하면 됩니다.
348, 350p
_, err = c.Write(data[:n]) // 클라이언트로 데이터를 보냄
if err != nil {
fmt.Println(err)
return
}
_, err = 추가
- Jaehoon Kim님 제보해주셔서 감사합니다.
352, 353p
_, err := c.Write([]byte(s)) // 서버로 데이터를 보냄
if err != nil {
fmt.Println(err)
return
}
_, err := 추가
- Jaehoon Kim님 제보해주셔서 감사합니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.