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の値を指定する。この時、()内の型の最初の文字を大文字にすることを注意する。

そうすると下記のように一番最初と同じ画面が表示される。