正誤表
下記の誤りや改良点等が見つかりました。ご連絡いただいた方、ありがとうございます。お気づきの点は、ご連絡ページからお知らせいただければ幸いです。
● 日付(2024.9.11など)はこのページに記載した日です
● 日付が赤茶色になっているものは最近の追加です(もっとも新しい更新は2024.9.11です)
重要な変更(実行に支障があるものなど)
-
p. 108 下から6行目(「5.4 defer」の「$ go run ex0513.go sample.txt」の下の説明)2024.5.28掲載。第2刷まで
defer 文で遅延実行を指定されたコードはすぐに実行されるのではありませんから、渡された変数はクロージャが実行されるまで評価されません。↓(原著の誤りのようです)
defer 文で遅延実行を指定されたコードはすぐには実行されませんが、指定された引数はすぐに評価され、その値は関数が実行されるまで保存されます。 -
p. 168 最初のコードの前(「7.13 暗黙のインタフェースによる依存性注入」の最初のコードの前)。2022.11.8掲載。第1刷
ログを記録する関数 LogOutput を定義します。↓(例のファイルを追加しました)
ログを記録する関数 LogOutput を定義します(ch07/ex0720.go)。 -
p. 171 6行目(「7.13 暗黙のインタフェースによる依存性注入」の中ほどより少し下の関数定義)。2022.11.8掲載。第1刷
func (c Controller) HandleGreeting(w http.ResponseWriter, r *http.Request) {↓
func (c Controller) SayHello(w http.ResponseWriter, r *http.Request) { -
p. 397 下から6行目(「B.2.3 実行結果」の上)。2022.10.14掲載。第1刷。2024.2.22さらに改訂
逆に、たとえば Windows で次を実行すると macOS(Intelプロセッサ用)の実行ファイル ができます。
$ GOOS=darwin GOARC=amd64 go build -o fmt-verb-mac
Mac にコピーして、実行パーミッションを付加すれば(chmod +x fmt-verb-mac)実行できるようになります。
詳しくはhttps://musha.com/scgo?ln=ax04を参照してください。
逆に、たとえばWindowsのPowerShellで次を実行するとmacOS(Intelプロセッサ用)の実行ファイルができます(Appleシリコン用の場合はamd64の代わりにarm64を指定します。なお、Intelプロセッサ用の実行ファイルはAppleシリコンでも動作しますので、実行速度が問題でなければamd64を指定しておいたほうが安全です)。
$Env:GOOS = "darwin"; $Env:GOARCH = "amd64"; go build -o fmt-verb-mac
Mac にコピーして、実行パーミッションを付加すれば(chmod +x fmt-verb-mac)実行で きるようになります。
詳しくはhttps://musha.com/scgo?ln=ax04やhttps://musha.com/scgo?ln=ax06などを参照してください。
-
p. 399 下から2行目(「B.3 基本構文と標準入出力」の本文2行目あたり)。2022.10.14掲載。第1刷
「run main.go」↓
「go run main.go」
事実と異なるものなど
-
p. 21 「2.1.2.4 文字列リテラル」の2行目〜6行目の3箇所、および p. 427 の索引。2023.11.29掲載、2024.4.23更新。第1刷
解釈済み文字列リテラル↓
解釈対象の文字列リテラル
"interpreted"は、たとえば「\n」などが文字どおり「バックスラッシュ」と「n」ではなく、改行(Line Feed)として扱われる(解釈される)という意味なので、「解釈対象の文字列リテラル」(あるいは「解釈される文字列リテラル」)のほうがよいですね。 -
p. 23 「2.1.4.1 整数型」の1行目。2023.3.17掲載。第1刷
1 バイトから 4 バイトまでの↓
1 バイトから 8 バイトまでの -
p. 211 「9.4.3 ミニマルバージョン選択」の最初の段落。2023.3.9掲載。第1刷
このとき、A、B、C が依存するCのバージョンが異なる場合にはどうしたらよいのでしょうか。↓
このとき、A、B、C が依存するDのバージョンが異なる場合にはどうしたらよいのでしょうか。
入力ミスなど
-
p. 27 「2.1.4.6 複素数型」の2行目。2023.3.17掲載。第1刷
(まった知らない)↓
(まったく知らない) -
p. 39 上から4行目(3章の最初のメモ)。2023.11.22掲載。第1刷
この章のリスト番号の付いていないコード例は ch03/ex0300.go にあります。↓
この章のコード例のうち、リスト番号の付いていないものについては ch03/ex0300.go に入っています。 -
p. 44 コラム「Goのランタイム」の下から3行目(「3.2.3 スライスのキャパシティ」の中)。2023.10.11掲載。第1刷
Go 言語のラインタイムは↓
Go 言語のランタイムは -
p. 45 下から10行目(「3.2.4 make」の4番目の段落)。2024.4.29掲載。第2刷まで
make を使って生成した配列の要素に値を入れるのに↓
make を使って生成したスライスの要素に値を入れるのに
ここはスライスに関する記述でした。すみません。 -
p. 52 下から9行目(「3.3 文字列、rune、バイト」の最初のコードの下の説明)。2022.11.25掲載。第1刷
fmt.Pprintfで%s。↓
fmt.Printfで%s。 -
p. 69 下から7行目(「例4-3」の下)。2022.9.15掲載。第1刷
エラーメッセージが表示れます。↓
エラーメッセージが表示されます。 -
p. 76 「例4-11」と「例4-12」のどちらも最後の行。2024.5.7掲載。第2刷まで
}↓
【削除してください】 (どちらも最後の行が余計でした) -
p. 85 下から14行目(「例4-22 switch 文の例」の下の説明の4つ目の段落)。2024.5.12掲載。第2刷まで
すべての case 節(および default 節)の全体(11行目から25行目)を {...} で囲みますが、↓
すべての case 節(および default 節)の全体(12行目から25行目)を {...} で囲みますが、 -
p. 93 例5-1の前。2023.2.28掲載。第1刷
0で割ろうとする0を返してくれる関数です↓
0で割ろうとすると0を返してくれる関数です -
p. 123 図6-3の②。2023.1.18掲載。第1刷
failedvpdate↓
failedUpdate -
p. 133 下から2行目(「6.9 ガベージコレクタの負荷軽減策」の2つ目の補足(カラスのマーク)のすぐ後の段落の2番目の文)。2023.3.26掲載。第1刷
ヒープにエスケープしてしまう場合がありますしかし、↓
ヒープにエスケープしてしまう場合があります。しかし、 -
p. 169 下から7行目(「7.13 暗黙のインタフェースによる依存性注入」のSayHelloの定義)。2022.11.8掲載。第1刷
return name + "さんこんにちは。", nil↓
return name + "さん、こんにちは。", nil -
p. 221 最後の行(「10.1 並行性をいつ利用するべきか」の最初の番号付きリストの「3.」)。2024.8.14掲載。第2刷まで
チャネルがブロックしていて、デッドロックになってしまったバッファ付きの...↓
チャネルがブロックしていて、デッドロックになってしまった。バッファ付きの... -
p. 264の最後のリスト「11.3.1 構造体タグを使ったメタデータの付加」のch11/3json/testdata/data.jsonのリスト)。2022.11.22掲載。第1刷
"da e_ordered":"2020-05-01T13:01:02Z", "cus omer_id":"3", "i ems":[{"id":"xyz123","name":"物品1"},{"id":"abc789","name":"物品2"}]
"date_ordered":"2020-05-01T13:01:02Z", "customer_id":"3", "items":[{"id":"xyz123","name":"物品1"},{"id":"abc789","name":"物品2"}]
-
p. 269 「11.3.5 JSON 解析のカスタマイズ」の2行目(p. 269の最後の行)。2024.8.28掲載。第2刷まで
RFC339 形式
RFC3339 形式
-
p. 280 func logicの定義の下「12.1 コンテキストとは」の冒頭)。2023.6.28掲載。第1刷
パッケージ context には、インタフェース Context を定義するだけでなく、
パッケージ context には、インタフェース Context が定義されているだけでなく、
-
p. 329 9行目(「14.1.1 型(type)、型情報(kind)、値(value)」の上の「カラスマーク」の上)
2022.11.22掲載。第1刷
フォーマットに用いられるというう点です。↓
フォーマットに用いられるという点です。 -
p. 350 下から6行目(「14.2.3 unsafe関連ツール」の最初の段落)
2024.8.22掲載。第2刷まで(明確にするため)
レースチェッカーのように、↓
レースチェッカー同様、 -
p. 380 下から3行目(「A.3.1 基本型の変数の宣言」のコードの6行目)
2024.9.11掲載。第2刷まで
var x, y = 10 "hello" // 型の異なる変数の宣言↓
var x, y = 10, "hello" // 型の異なる変数の宣言 -
p. 398 2行目(「B.2.3 実行結果」の本文1行目)
2024.9.11掲載。第2刷まで
上のいずれかの方法で fmt-verb 実行してみると↓
上のいずれかの方法で fmt-verb を実行してみると -
p. 399 3行目(「B.3 基本構文と標準入出力」の上、7つ目の段落の最後から2番目の文)
2023.3.20掲載。第1刷(読みやすくするため)
Printf とP が大文字になっています↓
Printf と、Pが大文字になっています -
p. 401のソースコード(ch22b/02guessnum2/main.go)およびp. 402のソースコード(ch22b/03guessnum-switch/main.go)
2023.9.15掲載。第1刷
関数readUserAnswerに引数を渡していますが、この引数は使われていないので不要でした。 本に掲載されている部分では、次のコードをご訂正ください(本には掲載されていませんがch22b/03guessnum-switch/main.goと04guessnum-jpn/main.goについても同じく2箇所ずつ変更があります。githubのコードは変更してあります)
【ch22b/02guessnum2/main.goの1箇所目(紙版p. 401の関数mainの4行目)】if num, err := readUserAnswer(count);↓
if num, err := readUserAnswer();
【ch22b/02guessnum2/main.goの2箇所目(紙版p. 401の関数readUserAnswerの冒頭)】func readUserAnswer(count int) (int, error) { // 戻り値が2つある↓
func readUserAnswer() (int, error) { // 戻り値が2つある
【ch22b/02guessnum-switch/main.go(紙版p. 402の関数mainの5行目)】switch num, err := readUserAnswer(count); { // 答えを読み込む↓
switch num, err := readUserAnswer(); { // 答えを読み込む