zoukankan      html  css  js  c++  java
  • 《go语言程序设计》学习(十)

    一,自定义类型

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

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

    嵌套不是继承。

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

  • 相关阅读:
    unix网络编程源码编译问题
    ubuntu15.04下安装docker
    hexo博客的相关配置
    hexo的jacman主题配置
    使用github和hexo搭建静态博客
    操作系统简单认识
    github for windows安装以及教程
    编译原理第五单元习题
    python3入门之列表和元组
    Python3入门之软件安装
  • 原文地址:https://www.cnblogs.com/mruoli/p/4713818.html
Copyright © 2011-2022 走看看