hakeの日記

Windows環境でプログラミングの勉強をしています。

Go言語 - マップ

rubyでいうところのハッシュ。
for rangeで取り出す場合は、キーのみと、キー&値のペアの取り出しができる。
キーを指定して値を読みだす場合、そのキーに対応する値が無い場合は二番目の戻り値がfalseになり、値(最初の戻り値)はゼロ値になる。

package main

import (
	"fmt"
)


func main() {

	m := map[string]int {
		"foo" : 1,
		"bar" : 2, 
		"baz" : 3,   // } を改行する場合はカンマが必要
	}

	// キーのみ取り出し
	for k := range m {
		fmt.Println(k)  //-> foo, bar, baz(順番は不定)
	}

	// キーと値の取り出し
	for k, v := range m {
		fmt.Println(k, v)  //-> foo, 1 ……(順番は不定)
	}

	// 値のないキーを指定
	v := m["zzz"]
	fmt.Println(v)  //-> 0 ゼロ値

	// 二つ目の戻り値がbool,値が無い場合はfalse
	v, b := m["zzz"]
	fmt.Println(v, b)  //-> 0 false

	// 値がある場合はtrue
	v, b  = m["foo"]
	fmt.Println(v, b)  //-> 1 true
}