Skip to content

Latest commit

 

History

History
71 lines (49 loc) · 1.65 KB

2.08.md

File metadata and controls

71 lines (49 loc) · 1.65 KB

2.8 自分の型を作る

人は「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のようなエラーが起こります。