我在某处看到了,但我不记得切片结构在哪里传递函数,如下面的代码片段。
package main
import "fmt"
func passSlice(arg interface{}) {
fmt.Println(arg)
}
func main() {
res := []struct {
Name string
}{}
passSlice(res)
}
我不知道,如何在函数中使用切片结构。有人有想法,我怎么能在功能中使用它?
答案 0 :(得分:2)
要使用切片结构(或存储在界面中的任何其他值),您必须先执行 type assertion 或 { {3}} 强>:
类型断言:
func passSlice(arg interface{}) {
// Put args value in v if it is of type []struct{ Name string }
v, ok := arg.([]struct{ Name string })
if !ok {
// did not contain a value of type []struct{Name string}
return
}
for _, s := range v {
fmt.Println(s.Name)
}
}
游乐场: type switch
类型开关类似,但可以有多种类型的情况。
还有一个使用reflect
包的选项,允许您更加动态地处理界面值,而无需事先了解您可以预期的类型,但使用反射也更复杂。要了解有关在Golang中使用反射的更多信息,请查看此处: