A Tour of Goをやるぞ(Packages, variables, and functions.)

これをやる

A Tour of Go

そしてメモりたくなったことをメモって行く

パッケージについて

  • 慣習として、パッケージ名はimportのパスの最後のエレメントになる
    • math/randならrand

https://tour.golang.org/basics/1

Exported name

大文字で始まる名前はエクスポートされる

Piはエクスポートされるが、piはされない

  • ※ なんか色々ぶっ飛ばした感があってよくわからん
  • ここでいう名前とはなんだろう。関数名とか変数名とか全部のスコープの話かな
  • ※ 変数?(定数?)関数名?とか?のスコープが命名規則で決まる話?こういう命名規則で書こうぜ的な話?

https://tour.golang.org/basics/3

関数は結果を複数返せる

package main

import "fmt"

func getMultipleValue() (string, string) {
    return "hello", "world"
}

func main() {
    a, b := getMultipleValue()
    fmt.Println(a, b)
}

3つ返す関数を2つの変数で受けるとかはダメっぽい

package main

import "fmt"

func getMultipleValue() (string, string, string) {
    return "hello", "world", "goodbye"
}

func main() {
    a, b := getMultipleValue()
    fmt.Println(a, b)
}

https://tour.golang.org/basics/6

名前つき戻り値

関数の戻り値に定義した名前の変数に値を格納し、return文の引数を指定しないと、最後に格納された値が返却される。

package main

import "fmt"

func hello() (hello, world string) {
    hello = "hello"
    world = "world"
    return
}

func main() {
    a,b := hello()
    fmt.Println(a)
    fmt.Println(b)   
}

可読性を損なうので短い関数にのみ利用すること。

https://tour.golang.org/basics/7

var

var文で変数のリストを定義できる。パッケージもしくは関数のレベルで宣言できる。 型は文の最後に来る。

var a, b, c int

初期化

var a, b, c int = 1, 2, 3

https://tour.golang.org/basics/8

:=

関数内では:=がvarによる変数宣言および初期化と等価に使える。

a := "test"
var a = "test"

Stringの初期値は空文字

value stirng
fmt.println(value)

はnullとかじゃなくて空文字になる。

型変換

T(v)でvをT型に変換できる。

型違いの値をそのまま代入するとコンパイルエラー。(オートボクシング的なのはなくてこの構文はキャストみたいな感じなのかな)

型推論

型を明示していない変数は右辺の値で型が推論される。 右辺に代入した値の型が明示的な場合、変数の型は代入された値の型になる。

感想

Javaしかわかんないのでプログラミングに関する色々を基本的にJava基準で考えていることに気づいた