Go言語の違うところ #3
はじめに
これの続き。
CやPythonをかじったことある人が、『基礎からわかるGo言語』を読んで順番に思ったことを書き連ねていくノート的なやつ
今日は眠いし遅いので短め
ポインタ
Cのポインタを理解していれば全く同じものなのでOK。 ただし、ポインタの演算は安全性を考慮して禁止されている。
package main import "fmt" func main() { var a, b int = 1, 1 f(a, &b) fmt.Println(a, b); // 1, 3 } func f(a int, b *int) { a += 2 *b += 2 }
ポインタでメモリだけ先に確保しておきたい場合は、mallockではなく、 new(<type>)
を使う。
ゼロ値
変数宣言時に値を入れない場合、Goはゼロ値で自動的に初期化してくれる。(すごく便利)
数値型→0 bool→false string→'' 配列(notスライス)→各要素をゼロ値にしたもの 構造体→各要素をゼロ値にしたもの その他→nil, NULLでもNoneでもない
ラベル
(break|continue)のあとにラベルを指定すると、任意の位置へジャンプできる。
func main() { for { for i := 0;i < 5;i++ { if i == 3 { break INNER_BREAK_DEST } } } INNER_BREAK_DEST: // ここに飛べる }
goto