0123
LOGS
golang の勉強(というか復習)の続き
- github のコード行数を計算したく,golang で書いてみる
- 厳密には Gemini に書かしている
以下解説
monthlyChanges := make(map[string]int)
:=
これは変数の宣言と代入なのは覚えているmap
関数はキーバリューのペアを格納するものmap[string]int
型を指定string
map のキーの型を文字列型に指定int
map の値の型を int 型に指定こんな感じで使える
monthlyChanges["January"] = 100 monthlyChanges["February"] = -50 monthlyChanges["March"] = 200
for _, commit := range commits {}
- いわゆる for 文
commits
がループ対象(map, スライス,配列)range
配列,スライス,map などの要素に順番にアクセスするためのキーワード.インデックスと値を取得できる_(ブランク識別子)
値を破棄するために使う.今回はインデックスがいらないので破棄している
スライス
とは- 配列に似たもの(違い)
- サイズが可変
- 参照型
var 変数名 []データ型
← こう書く
スライスの作成にはいくつかある
make()
関数を使う例 1(長さ 5 の int 型スライス):
numbers := make([]int, 5)
例 2(長さ 5, 容量 10 の int 型スライス):
numbers := make([]int, 5, 10)
リテラルを使う
- 例:
numbers := []int{1, 2, 3, 4, 5}
- 例:
- 配列からスライスを作る
array := [5]int{1, 2, 3, 4, 5} slice := array[1:4] // スライス slice は {2, 3, 4} を持つ
スライスの操作
- 要素へのアクセス
- 配列と同様にインデックスを使う(例:
numbers[0] // 1を出力
)
- 配列と同様にインデックスを使う(例:
要素の追加
append()
関数を使って末尾に追加numbers := []int{1, 2, 3} numbers = append(numbers, 4, 5) // numbers は {1, 2, 3, 4, 5} になる
スライスの結合
append()
関数を使って複数のスライスを結合slice1 := []int{1, 2} slice2 := []int{3, 4} combined := append(slice1, slice2...) // combined は {1, 2, 3, 4} になる
スライスの長さ
len()
関数を使う(例:len(numbers) // 5
)
- スライスの容量
cap()
関数を使う(例:cap(numbers) // 10
)
- 要素へのアクセス
- 配列に似たもの(違い)
出力
fmt.Println()
も良いが,オブジェクトの出力なら,fmt.Printf("%+v\n", 変数)
を使うと良さそう