0123
LOGS
golang の勉強(というか復習)の続き
- github のコード行数を計算したく,golang で書いてみる
 - 厳密には Gemini に書かしている
 以下解説
monthlyChanges := make(map[string]int):=これは変数の宣言と代入なのは覚えているmap関数はキーバリューのペアを格納するものmap[string]int型を指定stringmap のキーの型を文字列型に指定intmap の値の型を 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", 変数)を使うと良さそう