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は第二戻り値にコピーが渡される。