如何在函数中使用传递的struct

时间:2014-09-09 18:48:19

标签: go

我在某处看到了,但我不记得切片结构在哪里传递函数,如下面的代码片段。

package main

import "fmt"

func passSlice(arg interface{}) {
    fmt.Println(arg)
}

func main() {

    res := []struct {
        Name string
    }{}

    passSlice(res)

}

我不知道,如何在函数中使用切片结构。有人有想法,我怎么能在功能中使用它?

1 个答案:

答案 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中使用反射的更多信息,请查看此处: