Open1
Go入門メモ
Day 1
Goの基本的な文法について
Hello World
パッケージ名定義、標準パッケージをインポート
fmtパッケージで文字列出力
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
変数定義
2つの定義方法がある
右辺のリテラルから型が明確な場合のみ、2つ目の書き方ができる
// 1. 変数定義宣言 変数名 型
var a int
// 初期値代入も可
var b int = 1
//2. 変数名 初期値
n := 1
Goの扱うビルトイン型について
以下が存在。
- interface{} (any)
- bool
- byte
- complex64, complex128
- error
- float32, float64
- int, int8, int16, int32, int64
- rune, string
- uint, uint8, uint16, uint32, uint64
- uintptr
uintptrはアドレスを格納できる大きさを持つ整数型
整数型なので、アドレス参照(*a
)などはできず、演算結果も整数型としての結果
定数宣言
const
を用いて宣言できる
// 使われなくてもエラーにはならない。
const n = 1
// constで宣言された定数は、型キャスト不要(利用される場面で型が決まる。)
const x = 1
y := 1 + x
z := 1.2 + x
iota (列挙)
Goには列挙型が存在しない。const
と合わせてiota
を用いるとenumのような定数を宣言できる。
const (
Apple = iota
Orange
Banana
)
func main() {
fmt.Println(Apple) // 0
fmt.Println(Orange) // 1
fmt.Println(Banana) // 2
}
都度定数の設定ルールを変更することができる。
const (
Apple = iota + iota
Orange
Banana = iota + 3
Peach = 8
)
func main() {
fmt.Println(Apple) // 0 + 0
fmt.Println(Orange) // 1 + 1
fmt.Println(Banana) // 2 + 3
fmt.Println(Peach) // 8
}
型を指定して宣言もできる
type Fruit int
type Animal int
const (
Apple Fruit = iota
Orange
Banana
)
const (
Monkey Animal = iota
Elephant
Pig
)
func main() {
fmt.Println(Apple) // Fruit(0) なので 0
fmt.Println(Monkey) // Animal(0) なので 0
fmt.Println(Orange) // Fruit(1) なので 1
fmt.Println(Elephant) // Animal(1) なので 1
fmt.Println(Banana) // Fruit(2) なので 2
fmt.Println(Pig) // Animal(2) なので 2
// var fruit Fruit = Elephant これはエラー
var fruit Fruit = Fruit(Elephant)
fmt.Println(fruit) // 1
}