码迷,mamicode.com
首页 > 编程语言 > 详细

《go语言程序设计》学习(十)

时间:2015-08-08 21:09:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

一,自定义类型

这部分看来很久,感觉很难懂,很难掌握关键点。有以下几个概念:

接口嵌入,结构体的聚合与嵌入(嵌入值,嵌入带方法带匿名值,嵌入接口),自由组合的相互独立接口。

嵌套不是继承。

基本的嵌入就不详细说了,这种嵌入带来的效果就是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)

《go语言程序设计》学习(十)

标签:

原文地址:http://www.cnblogs.com/mruoli/p/4713818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!