go言語についてメモ
最近GoogleAppEngineのアプリを趣味で作っています。
使っている言語はgoogleが提供しているgo言語。
go言語はほかの言語と結構違うのでアレ?どうするんだっけ?的な事が多いです。
そこで個人的な備忘録をブログに。
リテラル
配列や構造体のリテラルは型名の後に{ }で囲んでデータを書いていきます。(データの区切りは普通にカンマ)
たとえばint型の配列なら
array := [...]int{1,2,3,4}
※スライスなら[...]ではなく[]
構造体なら,
data := DataName{1.0, 2.0}
入れ子の構造体なら
data := DataName1{1.0, DataName2{1,0}}
実行
main.goというファイルに書かれたプログラムを実行するならgoというコマンドの引数にrunを指定します。
$ go run main.go
この場合exeファイルはできません。
newは括弧ではさむ
data := new(型名)
いらない変数はアンダーバーで
配列の要素を一個ずつ取り出してくれるrange関数は便利だけどインデックスはいらない,しかしgoだといらない変数が宣言されていると怒られます。
そんな時はアンダーバーでいらない戻り値を受け取っておきます。
for _, obj := range(array) { }
rangeはコピーが渡される
for index, obj := range( {...} ) { }
このfor文でobjに値を代入してももとのデータには何の影響もない。
rangeは第二戻り値にコピーが渡される。