Go言語の型は、typeで自由に作ることができる。今回は、「複数の任意の型の値を一つにまとめたもの」である構造体(struct)という型を作成する。
例えばryokoという人を番号とふりがなをつけて表示してみる。
package main import "fmt" type Person struct { id int name string reading string } func main() { var ryoko Person ryoko = Person{id: 1, name: "ryoko", reading: "りょうこ"} fmt.Println(ryoko) }
type Person structのtypeとstructのセットでPersonという人の構造体の型を決める。次にPersonの型をidやnameなどを:で指定する。:の前にある型を構造体の場合、フィールドと呼ぶ。これで型を決定したので、main関数でPersonの型を使うことができて、ryoko = Person{id: 1, name: "ryoko", reading: "りょうこ"}で中身を指定してfmt.Println(ryoko)とすると、下記のように表示される。
ここで、ryokoのreadingだけ表示したい場合は、 fmt.Println(ryoko.reading)とすれば表示される。
では、次にpackageに構造体を使ってmain関数で呼び出してみる。Go言語では、packageに組み込んだ構造体がよく使われる。
まず、packageを作る。main.goと同じ階層にsampleディレクトリを作成し、その中にsample.goファイルを作る。
できたsample.goに下記のコードを記載する。
package sample type Person struct { Id int Name string Reading string }
これで、Personの型を入れたpackageができた。
次にmain.goファイルに下記のコードを記載する。
package main import ( "fmt" "./sample" ) func main() { var ryoko sample.Person ryoko = sample.Person{Id: 1, Name: "ryoko", Reading: "りょうこ"} fmt.Println(ryoko) }
import ( "fmt" "./sample" )でsampleファイルを呼び出す。func main()でryokoという変数にpackageの中のPerson型を使うという意味で、var ryoko sample.Personを記載して、ryokoの値を指定する。この時、()内の型の最初の文字を大文字にすることを注意する。
そうすると下記のように一番最初と同じ画面が表示される。