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)

  • 相关阅读:
    leetcode -- Add Binary
    leetcode -- 4sum
    leecode -- 3sum Closet
    C++单例模式
    MapReduce的模式、算法和用例
    react 学习笔记
    css3 文字过长用...代替
    scss/css 中添加ie hack
    springmvc 解决跨域CORS
    springmvc 添加Junit4
  • 原文地址:https://www.cnblogs.com/mruoli/p/4713818.html
Copyright © 2011-2022 走看看