gpt4 book ai didi

go - 重新输入代码但保留现有界面

转载 作者:行者123 更新时间:2023-12-01 20:26:43 25 4
gpt4 key购买 nike

我想重新键入现有类型但保留其接口(interface)继承。

所以示例代码:

interface interface1 {
func interfaceFunc1()
}

type basicStruct struct {
param int
}

type retyped1 basicStruct
type retyped2 basicStruct

func (basicStruct) interfaceFunc1() {
// does stuff
}

func getTyped1() retyped1 {
return basicStruct{param:0}
}

func getTyped2() retyped2 {
return basicStruct{param:1}
}

func main() {
type1 := getTyped1()
type2 := getTyped2()

// These lines do not compile
type1.interfaceFunc1()
type2.interfaceFunc1()
}

由于我正在使用一个代码生成库,我不能让它返回基本结构,它必须返回 retyped1 和 retyped2。
但我还需要使用接口(interface)函数。
无论如何使用接口(interface)函数,而不需要对所有接口(interface)函数进行一些愚蠢的复制和粘贴,除了几百行中的 1 if 语句之外,这些函数执行完全相同的操作?

最佳答案

正如 Burak Serdar 在 golang 中指出的那样有两种不同的方式来定义类型:

type retyped1 struct {
basicStruct
}

继承 basicStruct的方法, 和
type retyped2 basicStruct

它将创建具有与 basicStruct 相同字段的新结构,但不是它的方法。

对于您的特殊情况,您可以使用 type aliases ,这实际上只是类型的另一个名称,因此您可以重用它的方法:
type retyped1 = basicStruct

关于go - 重新输入代码但保留现有界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61212739/

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