// 火星上的日期
type sol float64
// 摄氏度
type celsius int32
// 坐标
type location struct {
lat, lng float64
}
// 最高、低温度
type temperature struct {
low, high celsius
}
// 报告
type report struct {
sol sol
location location
temperature temperature
}
rp1 := report{
sol: 15.4,
location: location{lat: 20.1, lng: 100.0},
temperature: temperature{low: -1, high: 100},
}
方法的 embed
如果多个嵌入的结构体有同名的函数
则不能直接用嵌入方式来调用了
package main
import "fmt"
// 摄氏度
type celsius float64
// 坐标
type location struct {
lat, lng float64
}
// 最高、低温度
type temperature struct {
low, high celsius
}
// 这里的是变化的地方
type report struct {
sol int
location
temperature
}
func (t temperature) average() celsius {
return (t.high + t.low) / 2
}
func main() {
rp1 := report{
sol: 15,
location: location{lat: 20.1, lng: 100.0},
temperature: temperature{low: -1.0, high: 100.0},
}
// 重点是这一行代码
fmt.Printf("%+v \n", rp1.average())
fmt.Printf("%+v", rp1)
}