人は「Goは型
が全てだ」と言います。Goは静的プログラミング言語であり、一度変数をある型で宣言したなら変更することはできません。静的なので。
次のビデオで型の変換とキャストについて見ていきます。
自分の型を作ってみましょう。Go playground
package main
import (
"fmt"
)
var a int
type hotdog int
var b hotdog
func main() {
a = 42
b = 43
fmt.Println(a)
fmt.Printf("%T\n", a)
fmt.Println(b)
fmt.Printf("%T\n", b)
}
これはこのような値を返します。
42
int
43
main.hotdog
a
の値は42
であり、型はint
です。b
の値は43
であり、型はmain
パッケージ内のhotdog
になっています。
type hotdog int
によって型を作り、hotdog
型の変数をvar b hotdog
で宣言しました。変数に値を割り当てるのはb = 43
で行いました。
Goは静的プログラミング言語なので、a = b
のようにして、b
の値をa
に割り当てようとしても、コンパイラが許しません。hotdog
型のものをint
型には割り当てられないのです。(このコードはコンパイルできません。)
package main
import (
"fmt"
)
var a int
type hotdog int
var b hotdog
func main() {
a = 42
b = a // `int`型の値を`hotdog`型の変数には割り当てられない
fmt.Println(a)
fmt.Printf("%T\n", a)
fmt.Println(b)
fmt.Printf("%T\n", b)
}
tmp/sandbox982815840/main.go:13: cannot use a (type int) as type hotdog in assignment
のようなエラーが起こります。