gpt4 book ai didi

go - 在接口(interface)中具有复制方法的惯用方式

转载 作者:行者123 更新时间:2023-12-01 22:43:36 24 4
gpt4 key购买 nike

在 Go 的接口(interface)中使用 Copy() 方法的惯用方法是什么?
我有一个结构 S可以返回自身的副本。
我还想要一个可以由任何可以返回自身副本的接口(interface)来实现。
下面的代码不会编译,因为你 cannot use S literal (type S) as type I in assignment ,但这基本上是我想要做的。
我也不想改(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 方法以返回接口(interface):

func (S) Copy() I {...}
您必须在需要时返回接口(interface)。

关于go - 在接口(interface)中具有复制方法的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63890595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com