structについてまとめたものです。
structのことを構造体といいます。
基本的な書き方
temperature構造体を作成する。
type temperature struct {
high, low float64
}
構造体の書き方
構造体の中に構造体を持たせることで、わかりやすくなります。
例えば下記は、report構造体の中身が何で構成されているかが不明瞭です。
type report struct {
sol int
high, low foat64
lat, long float64
}
下記のように書き換えた場合、report構造体はどういった要素で構成されているかがわかりやすくなります。
type report struct {
sol int
temperature temperature
location location
}
全体コード
type celsius float64
type sol int
type temperature struct {
high, low celsius
}
type location struct {
lat, long float64
}
// report 構造体は 日にち、気温、場所 の情報を持つ
type report struct {
sol int
temperature temperature
location location
}
構造体に構造体を埋め込む
フィールド名を省略することで構造体を埋め込みます。
type report struct {
sol
temperature
location
}
間接的にメソッドにアクセスする
temperature構造体に average
メソッドを定義します。
func (t temperature) average() celsius {
return (t.high + t.low) / 2
}
ここで、report構造体は、temperature構造体を埋め込んでいるので、
以下のようにtemperatureのメソッドにアクセスすることができます。
fmt.Println(report.temperature.average())
また、以下のように書くことで、reportがaverage
メソッドを持っているかのようにできます。
func (r report) average() celsius {
return r.temperature.average()
}
func main() {
fmt.Println(report.average())
}