在界面设计中常用的复制技巧
今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《在界面设计中常用的复制技巧》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!
问题内容在 go 的接口中使用 copy() 方法的惯用方法是什么?
我有一个 struct s
,它可以返回其自身的副本。
我还想要一个可以由任何可以返回自身副本的接口来实现的接口。
下面的代码不会编译,因为你 不能在赋值
中使用 s 文字(s 类型)作为 i 类型,但这基本上就是我想要做的。
我也不想将 (s) copy() s
更改为 (s) copy() i
因为:“实现包应该返回具体类型”
https://github.com/golang/go/wiki/codereviewcomments#interfaces
我知道我可能需要泛型或其他东西,但如果缺少这些,我们应该如何处理这种情况?
package main
type S struct {
}
func (S) Copy() S {
return S{}
}
//====== another package ======
type I interface {
Copy() I
}
func main() {
var i I = S{}
i.Copy()
}
解决方案
在没有泛型的情况下执行此操作的唯一方法是定义 copy 方法以返回接口:
func (S) Copy() I {...}
您必须在需要时返回接口。
终于介绍完啦!小伙伴们,这篇关于《在界面设计中常用的复制技巧》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~编程网公众号也会发布Golang相关知识,快来关注吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341