ちょっと前にGo言語を勉強していて、備忘録がてらその時のメモを書いていきます。
パッケージ
goはパッケージと言う単位で構成され、その中の関数や変数の単位でimport,exportをしていきます。
できるかどうかは、文字の大文字小文字で判別されています。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi) //OK
fmt.Println(math.pi) // error
}
大文字の場合はexport されず
小文字の場合はexport されます。
変数宣言
変数は var <変数名> <型名> の形で宣言されます。
また分割代入っぽくかけます。
セイウチ演算子(:=)を使うと型推論を効かせて型名を省略して宣言できます。その場合はの宣言は <変数名> := <値> となります
定数は const <変数名> = <値> となります。 定数の場合は勝手に型推論が働きます。
var i, j int = 1, 2
test := "string" // 型推論を効かせて変数初期化
const Pi = 3.14 // 定数、この場合型推論を効かせて定数初期化はできない
基本型
go は zero valueと言う機能があり、特定の型で値が代入されなかった場合自動的に値が代入されます。
なので、値を入れ忘れてがnullになってると言うケースを防ぐことができます。
bool // zero value はfalse
string // zero value は ""
int int8 int16 int32 int64 // zero value は0
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 の別名
rune // int32 の別名
// Unicode のコードポイントを表す
float32 float64
complex64 complex128
なお、なぜか基本型に複素数があります。
型変換
<型名>(<変数名>)で型変換ができる
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)