1. スライス × len関数 でのループ処理
サクッと動作確認
コード本体
package main
import "fmt"
func main() {
s := []int{2, 4, 6, 8}
for i := 0; i < len(s); i++{
fmt.Println(i,s[i])
}
}
2. マップ × len関数 でのループ処理 (※不可!!)
不可
mapだと、実行の度に出力される要素の順番がランダム化される。(v1.11以下の場合。)
つまり、そもそもキーが指定できない。(または理想的ではない。)
ちなみに、len関数で要素数を取得するところまでは可能です↓
サクッと動作確認
コード本体
package main
import "fmt"
func main() {
m := map[string]int{"maeda":165, "yamada":175, "suzuki":180}
fmt.Println(len(m)) // => 3
}
3.スライス × range でのループ処理
サクッと動作確認
コード本体
package main
import "fmt"
func main() {
s := []int{2, 4, 6, 8}
for i ,v := range s {
fmt.Println(i, v)
}
}
4.マップ × range でのループ処理
サクッと動作確認
コード本体
package main
import "fmt"
func main() {
m := map[string]int{"maeda":165, "yamada":175, "suzuki":180}
for k, v := range m {
fmt.Println(k, v)
}
}
結論
- マップでは、len関数が使えない。
- そのため、マップでの場合はrange一択になる。
- スライスでは、len関数もrangeも両方使える。
- rangeはマップでもスライスでも、要素数ループができる。