Go 如何使函数作为字符串接收不同的类型
在我的代码中,我有一些字符串类型,如:Go 如何使函数作为字符串接收不同的类型,go,Go,在我的代码中,我有一些字符串类型,如: type StringTypeOne string type StringTYpeOwn string 我知道我可以在阅读后将它们转换为字符串: 但是我想写一个函数,它接受所有这些类型的结构,例如 func handleString(s StringType) 其中s可以是StringTypeOne或StringTypeTwo,也可以是带有字符串字段的任何其他类型 在戈朗这可能吗 在戈朗这可能吗 没有 新类型的全部用途是它是一种不同的类型。如果您确实
type StringTypeOne string
type StringTYpeOwn string
我知道我可以在阅读后将它们转换为字符串:
但是我想写一个函数,它接受所有这些类型的结构,例如
func handleString(s StringType)
其中s可以是StringTypeOne或StringTypeTwo,也可以是带有字符串字段的任何其他类型
在戈朗这可能吗
在戈朗这可能吗
没有
新类型的全部用途是它是一种不同的类型。如果您确实需要此功能,您可以创建一个新的接口类型,然后为每个StringType实现,并且您的函数将该接口类型的一个实例作为其参数。不,您不能。但出于您的目的,您应该实现一个自定义接口
// define an interface that do something you need
type Doer interface {
DoSomething();
}
然后定义自定义类型并实现定义接口的所有必要功能:
type StringTypeOne string
type StringTypeTwo string
func (s StringTypeOne) DoSomething() {
}
func (s StringTypeTwo) DoSomething() {
}
然后,您可以创建接收接口作为参数的函数:
func handleString(s Doer) {
}
此方法可以同时接收StringTypeOne或StringTypeTwo作为参数。我认为这是正确的答案,如果您提供一些代码示例会更好。此方法不满足任何类型的约束,其中有字符串字段,其中s可以是StringTypeOne或StringTypeTwo,或任何其他类型的字符串字段。或者任何类型的潜在类型字符串的可能意图。@Volker-Hm。。。一个Stringer界面怎么样。。。func Stringstring?@Volker在你的例子中,你基本上把所有类型的下划线都当作string就是string。因此,您可以将函数接受的参数编写为字符串。例如:func handleStrings String{},然后可以从自定义类型中选择字符串值。例如:a:=StringTypeTwoexample;手镯。String@hqt:否决票不需要评论,请求评论既无聊又不合适。这看起来像是XY问题。你所要求的事情不能在围棋中完成。但是你能解释一下你要解决的更大的问题吗?如果是这样,肯定有另一种解决方案。