【Go言語】range

配列、slice、mapで使えるrangeを使ってみる

rangeとは

  • 配列、slice、mapと組み合わせて使う
  • 要素分だけ何らかの処理を繰り返したい時につかう

オーソドックスなrange

基本文法 for i, v := range 変数名 {
繰り返し処理
}

i = sliceのインデックス(何番目の要素か)
v = sliceの要素の値

package main

import "fmt"

func main() {
    staticLan := []string{"Java", "Go", "C"}
    for i, v := range staticLan {
        fmt.Println(i, v)
    }
}

出力結果

0 Java
1 Go
2 C

iかvが必要のない時のrange

  • iかvのどちらかが必要ない時に、必要のないi(もしくはv)を繰り返し処理の中で破棄することができる

→iかvのどちらかのみを利用することができる

文法
for _, v := range 変数名 {
繰り返し処理{
}
のiもしくはvの必要のない方を"_"(アンダーバー)にする
繰り返し処理の中では必要のないiもしくはvは書かない

package main

import "fmt"

//vだけを表示する
func main() {
    staticLan := []string{"Java", "Go", "C"}
    for _, v := range staticLan {
        fmt.Println(v)
    }
}

出力結果

Java
Go
C

mapでrangeを使用する

文法 for k, v := range 変数名 {
繰り返し処理
}

k = mapの中のキー
v = mapの値

package main

import "fmt"

func main() {
//mapでrange
    webTech := map[string]string{"FrontSide": "JavaSctipt", "ServerSide": "Go", "DataBase": "MySQL"}
    for k, v := range webTech {
        fmt.Println(k, v)
    }
}

出力結果

DataBase MySQL
FrontSide JavaSctipt
ServerSide Go

参考文献
松尾愛賀(2016)『スターティングGo言語』株式会社 翔泳社

参考にさせていただいたサイト
「急いで学ぶGo lang#7 range・Array・slice・map」,
<[http://dev.classmethod.jp/author/syuta/] >2016年10月1日アクセス.