例如:
package main
import (
"fmt"
)
type X struct{
x string
}
type Y struct{
y string
}
func main() {
var x []X
var y []Y
f(x)
f(y)
}
func f(value interface{}){
if(typeof(value) == "[]X"){
fmt.Println("this is X")
}
if(typeof(value) == "[]Y"){
fmt.Println("this is Y")
}
}
expected output: this is X
this is Y
value interface{}
类型错误。如何将不同的结构放入一个函数中,然后动态定义其类型。
这样的事情可能吗? 感谢。
答案 0 :(得分:4)
如果您知道确切的可能类型,则可以使用type switch。否则,您可以使用reflect包。
以下是演示类型切换方法的代码:
package main
import (
"fmt"
)
type X struct {
x string
}
type Y struct {
y string
}
func main() {
var x = []X{{"xx"}}
var y = []Y{{"yy"}}
f(x)
f(y)
}
func f(value interface{}) {
switch value := value.(type) {
case []X:
fmt.Println("This is X", value)
case []Y:
fmt.Println("This is Y", value)
default:
fmt.Println("This is YoYo")
}
}
播放链接:here