Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何使函数作为字符串接收不同的类型_Go - Fatal编程技术网

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问题。你所要求的事情不能在围棋中完成。但是你能解释一下你要解决的更大的问题吗?如果是这样,肯定有另一种解决方案。