📘
Go言語チュートリアル 「A Tour of Go」 パッケージ、変数、関数編
A Tour of Goの「Packages, variables, and functions.」を完了したので、復習も兼ねて、内容をまとめてみます。
A Tour of Go
既にまとめられている記事がいくつかあり、何番煎じかはわかりませんが、暖かく見守っていただければと思います。
残りの4レッスンについては、次回以降で!
Packages, variables, and functions.
パッケージとインポート
プログラムはmainパッケージから実行される
importでパッケージを読み込む
package main
import (
"fmt" // コードを整形してくれるパッケージ
"math/rand" // 乱数生成パッケージ
)
// この書き方も可。
import "fmt"
import "math/rand"
エクスポート
エクスポートされていない名前は外部パッケージから呼び出すことができない。また、エクスポートできるものは大文字から始まる名前のみ。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi) // Piは大文字始まりなので、mathパッケージ外から呼び出せる
}
関数
0個以上の引数を取れる。
// 2つの引数を受け取る
func add(x int, y int) int {
return x + y
}
// 2つ以上の引数が同じ方の場合は最後の型以外を省略可能。
func add(a string, x, y int) int {
return x + y
}
// 2つの返り値を返却することも可能
func swap(x, y string) (string, string) {
return y, x
}
// 戻り値への名前付けが可能
func add(x, y int) (sum int) {
sum = x + y
return // sumが返却される
}
変数
varステートメントで変数を定義できる。
// 関数の引数と同様に2つ以上の変数が同じ場合は最後の型以外を省略できる。
var c, python, java bool
// 初期化子の定義も可能。初期化子の持つ型になる
var i, j int = 1, 2
// 関数内では短い := の代入文を使った暗黙的な型宣言も可能。
func main() {
k := 3
}
基本型
- bool
- string
- int int8 int16 int32 int64
- uint uint8 uint16 uint32 uint64 uintptr
- byte (uint8の別名)
- rune (int32の別名)
- float32 float64
- complex64 complex128
ゼロ値
初期値を与えず、に宣言するとゼロ値が与えられる。
- 数値型(int,floatなど): 0
- bool型: false
- string型: "" (空文字列( empty string ))
func main() {
var i int // 0
var f float64 // 0
var b bool // false
var s string // ""
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}
型変換
C言語とは異なり、Goでの型変換は明示的な変換が必要。
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
i := 42
f := float64(i)
u := uint(f)
型推論
明示的な型を指定せずに変数を宣言した場合( := や var = のいずれか)、変数の型は右側の変数から型推論される。
var i int
j := i // int
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
定数
constを使って定数を定義できる。
文字(character)、文字列(string)、boolean、数値(numeric)のみ。
:= を使って宣言は不可。
const Pi = 3.14
func main() {
const World = "世界"
const Truth = true
}
Discussion