Edited at

golangのチュートリアルのメモ


Goのチュートリアルの内容を箇条書き

1 大文字で始まる名前は、外部参照可能。小文字で始まるものは外部からアクセスできない

2 関数の引数の変数名の後ろに型名を書く


xxx.go

func test(x int, y int) int {

// この同じ形の場合下記もOK
// func test(x, y int) int {
return x + y
}

3 複数の戻り値の場合


xxx.go

func test(x int, y int) (int, int) {

return x + y
}

4 複数の戻り値の場合(戻り値に変数名を設定)


xxx.go

func test(sum int) (a, b int) {

a = sum * 4 / 9
b = sum - x
// 戻り値に変数名を設定した場合returnに何も書かずに戻すことができる
return
}

5 変数の宣言


xxx.go

// 変数の宣言

var i int
//初期化も同時に行う
var i, j int = 1, 2
//暗黙的な宣言
i := 3
// 関数の外では、varが必要で暗黙的な宣言は利用できない

//型を定義しない場合
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128

//定数は、文字(character)、文字列(string)、boolean、数値(numeric)のみ
//定数は := を使って宣言できない
const Pi = 3.14


6 初期値がない場合、0値がセットされる

数値型(int,floatなど): 0

bool型: false
string型: "" (空文字列( empty string ))

7 型変換

Goでの型変換は明示的な変換が必要


ポインタを使う場合

ポインタを考えて引数や戻値を設定する必要がある


main.go

func main() {

i := 0
test(i)
fmt.Println(i) // 0
}

func test(i int) {
i = 10
}


上記はmain()のiにも反映させる場合


main.go

func main() {

i := 0
test(&i) //&を付ける
fmt.Println(i) // 0
}

func test(i *int) { //*を付ける
i = 10
}



sliceが引数の場合

array指定すると下記のように記述しないとエラーになる

func main() {

sampleArray := [3]int{} // arrayを定義
testSlice(sampleArray) // これはエラー
testSlice(sampleArray[:]) // これは正常 ← 戻り値はsliceになるから正常
}

func takeSlice(s []int) {}


参考

A Tour of Go