美文网首页go学习
go语言面向对象之嵌入

go语言面向对象之嵌入

作者: Jancd | 来源:发表于2017-09-15 01:52 被阅读6次

 golang中type 可以Embeded。拥有某个类型,那就拥有这个类型的一切。有的时候,就会出现A类型没有实现某个接口,但是嵌入A中的B类型实现了,这个时候也相当于A实现了该接口。

 这里仅仅讨论一种情况:

 如果A中还嵌入了C,C和B都实现了同样都接口I,那么会是什么情况?是调用C呢还是B呢还是别的?

实例代码:

package main

type errDemo struct {

}
type ERR struct {

}
func (e *errDemo)Error()string  {
    return "errDemo error!"
}

func (e *ERR)Error()string  {
    return "errDemo error!"
}
type ERROR struct {
    ERR
    errDemo
}
func main() {
    var e ERROR = ERROR{}
    e.Error()
}

程序在编译阶段会报错: ambiguous selector e.Error
解决办法:
 A实现这个接口

相关文章

  • go语言面向对象之嵌入

     golang中type 可以Embeded。拥有某个类型,那就拥有这个类型的一切。有的时候,就会出现A类型没有实...

  • Golang learning 结构体 struct 与面向对

    Go 语言并不是传统意义上的面向对象语言,但是实现很小的面向对象的机制。匿名嵌入并不是继承,无法实现多态处理,虽然...

  • 第十六章:Go语言面向对象编程

    1. GO语言OOP概述 Go语言不是纯粹的面向对象的语言,准确是描述是,Go语言支持面向对象编程的特性.Go语言...

  • Go基础语法(十二)

    面向对象编程 Go 并不是完全面向对象的编程语言。 Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如...

  • struct

    面向对象编程 Go支持面向对象编程特性,但和传统面向对象编程是有区别的,Go并不是纯粹的面向对象语言。 Go没有类...

  • Golang-TCP异步框架Tao分析

    TCP异步框架 Golang 编程风格 Go语言面向对象编程的风格是多用组合,少用继承,以匿名嵌入的方式实现继承。...

  • go day06 面向对象 匿名组合 方法、方法集、方法

    面向对象 对于面向对象编程的支持Go语言设计的非常简洁而优雅。因为,Go语言并没有沿袭传统的面向对象编程中的诸多概...

  • 第13章-OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • Golang(十三) OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • Go语言入门第三节 Go 语言面向对象机制

    Go语言面向对象编程 Go语言的面相对象和主流语言有很大的不同,如Go 语言里是不支持继承,Go语言的接口实现也不...

网友评论

    本文标题:go语言面向对象之嵌入

    本文链接:https://www.haomeiwen.com/subject/wqnjsxtx.html