美文网首页
从一个现有的非 interface 类型创建新类型时,并不会继承

从一个现有的非 interface 类型创建新类型时,并不会继承

作者: anthonydan | 来源:发表于2020-03-17 15:33 被阅读0次

三个知识点:
1.非interface类型创建的新类型,不会继承方法。
2.非interface类型可以通过结构体,匿名字段的实行,继承方法。
3.interface类型的创建的新类型,继承方法。

从一个现有的非 interface 类型创建新类型时,并不会继承原有的方法:

// 定义 Mutex 的自定义类型
type myMutex sync.Mutex

func main() {
var mtx myMutex
mtx.Lock()
mtx.UnLock()
}
mtx.Lock undefined (type myMutex has no field or method Lock)…

如果你需要使用原类型的方法,可将原类型以匿名字段的形式嵌到你定义的新 struct 中:

// 类型以字段形式直接嵌入
type myLocker struct {
sync.Mutex
}

func main() {
var locker myLocker
locker.Lock()
locker.Unlock()
}
interface 类型声明也保留它的方法集:

type myLocker sync.Locker

func main() {
var locker myLocker
locker.Lock()
locker.Unlock()
}

相关文章

  • 从一个现有的非 interface 类型创建新类型时,并不会继承

    三个知识点:1.非interface类型创建的新类型,不会继承方法。2.非interface类型可以通过结构体,匿...

  • golang-interface{} 类型使用

    interface{} 表示可以接纳所有的类型 未使用 interface{} 类型 使用了 interface{...

  • javascript继承之原型式继承(四)

    借助原型可以基于已有的对象创建新的对象,同时还不必因此创建自定义类型 创建一个对象 通过object方法原型式继承...

  • 虚基类和一些概念

    继承:通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时...

  • JS--继承(原型式继承和寄生继承)

    原型式继承:其思想是借助原型,可以基于已有的对象创建新的对象,同时还不用创建自定义类型。 可以看到在Object内...

  • JavaScript之继承

    1.原型链 让一个引用类型继承另一个引用类型的属性和方法。 缺点: 通过原型链实现继承时,不能使用对象字面量创建原...

  • 【进阶】TS高级类型,泛型

    # 类型别名 type 类型别名就是给已有的类型取一个新名字,并不会新建类型 类型别名:可以用于原始值,联合类型,...

  • 类和对象

    类在面向对象编程中是很基础的概念,其最基本的功能就是创建新的数据类型,另外还有继承功能,就是可以从一个类A派生出一...

  • typescript 入门-接口

    interface 定义 可选属性 只读 函数描述 可索引 类描述 类构造器描述 混合类型 继承接口 继承类

  • golang interface

    interface 类型断言 interface的变量里面可以存储任意类型类型数据(原理: 任何类型都实现了空接口...

网友评论

      本文标题:从一个现有的非 interface 类型创建新类型时,并不会继承

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