Go中的接口之初体验

栏目: Go · 发布时间: 7年前

内容简介:运行结果:
// code_21_struct_interface_firsttime project main.go
package main

import (
    "fmt"
)

/*
    1)接口interface是一个自定义类型,接口类型具体描述了一系列方法的集合。

    2)接口类型是一种抽象的类型,它不会暴露出它代表的对象的内部值的结构和这个对象支持的基础操作的结合,
    他们只会展示出他们自己的方法。
    因此接口类型不能将其实例化。

    3)Go通过接口实现了鸭子类型(duck-typing)
*/

type Humaner interface {
    SayHi()
    //1)一般以er结尾
    //2)接口只有方法声明,没有实现,没有数据字段
    //3)接口可以匿名嵌入其他接口,或嵌入到结构中
}

type Student struct {
    name  string
    score float64
}

//Student实现SayHi()方法
func (s *Student) SayHi() {
    fmt.Printf("Student[%s,%f] say hi!!!\n", s.name, s.score)
}

type Teacher struct {
    name  string
    group string
}

func (t *Teacher) SayHi() {
    fmt.Printf("Teacher[%s,%s] say hi!!!\n", t.name, t.group)
}

type MyStr string

func (str MyStr) SayHi() {
    fmt.Printf("MyStr[%s] say hi!", str)
}

func WhoSayHi(i Humaner) {
    i.SayHi()
}

func main() {
    //接口的实现:1)接口是用来定义行为的类型。
    //2)这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。
    //3)一个实现了这些方法的具体类型是这个接口类型的实例。
    //4)如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。
    //这个赋值会把用户定义的类型的值存入接口类型的值。

    s := &Student{"ck_god", 88.88}
    t := &Teacher{"god_girl", "computer_programmer"}
    var tmp MyStr = "字符对象"

    s.SayHi()
    t.SayHi()
    tmp.SayHi()
    fmt.Println("\n==============\n")

    //多态--鸭子模型,调用同一接口,不同表现
    WhoSayHi(s)
    WhoSayHi(t)
    WhoSayHi(tmp)

    fmt.Println("\n==============\n")
    x := make([]Humaner, 3)
    x[0], x[1], x[2] = s, t, tmp

    for _, value := range x {
        value.SayHi()
    }
    fmt.Println("\n==============\n")
}

运行结果:

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符对象] say hi!
==============

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符对象] say hi!
==============

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符对象] say hi!
==============

以上所述就是小编给大家介绍的《Go中的接口之初体验》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

曼昆 (N.Gregory Mankiw) / 梁小民、梁砾 / 北京大学出版社 / 2015-5-1 / 128

《经济学原理(第7版):微观经济学分册+宏观经济学分册》是目前国内市场上最受欢迎的引进版经济学教材之一,其最大特点是它的“学生导向”,它更多地强调经济学原理的应用和政策分析,而非经济学模型。第7版在延续该书一贯风格的同时,对第6版作了全面修订和改进。大幅更新了“新闻摘录”“案例研究”等专栏,拓展了章后习题。一起来看看 《经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试