一,自定义类型
这部分看来很久,感觉很难懂,很难掌握关键点。有以下几个概念:
接口嵌入,结构体的聚合与嵌入(嵌入值,嵌入带方法带匿名值,嵌入接口),自由组合的相互独立接口。
嵌套不是继承。
基本的嵌入就不详细说了,这种嵌入带来的效果就是A中嵌入了B,则A相当于自己定义了B点全部内容。
自由组合的相互独立接口,相对于有层次的嵌套,要灵活的多,而且无需保持层次结构,可以自由的添加其他接口。
接口嵌入,还是用一段代码说吧
type optioner interface { Name() string IsValid() bool } type OptionCommon struct { ShortName string LongName string } type FloatOption struct { Optioner //匿名字段,(接口嵌入,需要具体的类型) Value float64 } type GenericOption struct { OptionCommon //匿名字段,嵌入 } func (option GenericOption) Name() string { return name(option.ShortName, option.LongName) } func (option GenericOption) IsValid() bool { return true } func main(){ sizeOption := FloatOption{ GenericOption{OptionCommon{"s","size"}},12.3} }
注意看这段代码,定义floatoption的时候,是嵌入的接口,使用的时候,要显式的赋予一个值来满足该接口。(接口说抽象的,无法默认初始化为0)
时间: 2024-10-17 07:12:41