見出し画像

Go日記: 『Learning Go: An Idiomatic Approach to Real-World Go Programming (English Edition)』試し読み

Kindle で Bodner, Jon (2021-03-02). 『Learning Go: An Idiomatic Approach to Real-World Go Programming (English Edition) 』 O'Reilly Media. Kindle 版. を試し読みした。

The Go Playground に読みながら試したコードを貼っておく。

package main
import (
	"fmt"
)
func main() {
	aboutConst()
	aboutSlice()
}
func aboutConst() {
	// Enum
	const (
		A int = iota
		B
		C
	)
	fmt.Println(C) // 2
	const untypedX = 10 // untyped constant
	var floatF float64 = untypedX
	var intI int = untypedX
	var byteB byte = untypedX
	fmt.Println(floatF, intI, byteB) // 10 10 10
}
func aboutSlice() {
	slice := make([]int, 5)
	slice = append(slice, 99)
	fmt.Println(slice) // [0 0 0 0 0 99] intのゼロ値で初期化された5要素のスライスに99が6番目として付け足される
	s := make([]int, 0) // 長さ0のスライス
	s = append(s, 10)
	s = append(s, 20)
	fmt.Println(s) // [10 20]
	s = append(s, slice...) // s + slice
	fmt.Println(s)          // [10 20 0 0 0 0 0 99]
	x := []int{}   // This creates a zero-length slice(not nil)
	fmt.Println(x) // []
	x = append(x, s...)
	fmt.Println(x) // [10 20 0 0 0 0 0 99]
}

タイトル通り「Idiomatic な Go」を伝授しようという姿勢が一貫している。Go の初心者が実際に Go でなにか作ってみよう、仕事に活かそう、と思うときに参考になる知恵が満載な印象だ。「Go だったらこう書くよね」を教えてくれる。「ここでこういう書き方をするのは、こういう背景があるからなんだよ」というのもちゃんと書いてある。変にごまかさない書き方はとても好きだなぁ。個人的に「おまじない」という表現が大嫌いだし、「こうするもんだからとにかく覚えて(=従って!)」と言われるとモチベがゼロ値に戻る。メモリ・アロケーションやランタイムの仕組みなど、そういう若干込み入った事情の話が出てきてくれて構わないので、なぜそうなのかをしっかり説明してほしい。「歴史的経緯でそうなんだよ」という場合には、しっかりその歴史を説明してほしい。読むのが苦ではないので、ちゃんと書いてある本が好きだ。で、(試し読みしかしてないけど)この本はそういう「ちゃんとした」部類の本だと思う。(買お。)

SN

関連リポジトリ


この記事が気に入ったらサポートをしてみませんか?