双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

go新手请教一个interface的问题

ruiruining2010 ruiruining2010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
希望能实现如下的功能,尝试了很久一直不对,请教各位大神

现在有一个interface : I
type I interface {
DO()
}

I有两个子类D1和D2,D1和D2都会占用某个唯一的资源,因此不能复制

现在有一个struct : S,我希望能运行时赋值 ii,并调用DO函数
我以为可以这样写

type S struct {
ii *I
}
//
func (s *S) Do() {
s.ii.DO()
}
//
d1 := D1{}
d2 := D2{}
s1 := S{ ii : d1 }
s2 := S{ ii : d2 }

但是发现无法编译
如果写成
type S struct {
ii I
}

这里就会有拷贝。。。
尝试了各种姿势始终不行。。。
...全文

相关推荐

Golang 新手可能会踩的 50 个坑

Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。

魏,是你啊

golang技术随笔(一)深入理解interface

Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。可见接口在golang中的地位,及其对gloang这门语言所带来的活力。      golang中的interface是什么 接口相当于是一份契约,它规定了一个对象所能提供的一组操作。要理解golang中接口的概念我们最好还是先来看看别的现代语言是如何实现

justaipanda

Golang笔记——Interface类型

接口定义了类型应该具备的行为(即方法)。Go 的接口与其他语言(如 Java 或 C++)中的接口有一些不同之处,特别是Go 的接口不需要显式声明实现,即只要类型实现了接口的方法,就自动实现了该接口。Method1() // 方法签名Method2() // 方法签名类型断言:用于在运行时提取接口的具体类型值,如果类型不匹配,可以使用ok变量避免运行时错误。类型开关:允许你对接口值的动态类型进行多分支判断,可以在多个可能的类型之间选择。反射:通过reflect包可以。

小前端而已

Go-有趣的Go代码的语料库

有趣的Go代码的语料库

weixin_39840515

Go-Go语言快速入门

通过简单的例子,来快速入门Go语言基础编程、语法等各种语言特性,主要面向新手级别的学习者。下面所有例子均来源于网络,看文需谨慎后果自负。

weixin_39840914
评论 4
收藏 已收藏
分享
返回顶部
ruiruining2010
go语言 2,351 成员 924 内容