这是我的第一个golang程序,而不仅仅是阅读文档,所以请耐心等待。我有一个类似的结构:-(来自解析的 yaml)type GLBConfig struct { GLBList []struct { Failover string `json:"failover" yaml:"failover"` GLB string `json:"glb" yaml:"glb"` Pool []struct { Fqdn string `json:"fqdn" yaml:"fqdn"` PercentConsidered int `json:"percent_considered" yaml:"percent_considered"` } `json:"pool" yaml:"pool"` } `json:"glb_list" yaml:"glb_list"`}现在,在我的主函数中,有一个 for 循环来处理每个 GLB:-for _, glb := range config_file.GLBList { processGLB(glb)}processGLB接收这种类型的函数定义是什么?我试过这样做,但它不起作用,我想知道为什么。func processGLB(glb struct{}) { fmt.Println(glb)}./glb_workers.go:42: cannot use glb (type struct { Failover string "json:\"failover\" yaml:\"failover\""; Glb string "json:\"glb\" yaml:\"glb\""; Pool []struct { Fqdn string "json:\"fqdn\" yaml:\"fqdn\""; PercentConsidered int "json:\"percent_considered\" yaml:\"percent_considered\"" } "json:\"pool\" yaml:\"pool\"" }) as type struct {} in argument to processGLB然后,稍后进行一些谷歌搜索,这是有效的。func processGLB(glb interface{}) { fmt.Println(glb)}这样做是个好主意吗?为什么我必须使用接口来传递一个简单的结构命名字段?最后,在 golang 中最优雅/最正确的方法是什么?
2 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
GLBList 被定义为结构数组。在 Go 中,没有任何东西叫做 struct{}。所有的 go 类型都实现了空接口,因此可以使用空接口来传递结构体(在这种情况下没有名称的结构体)。更多详情http://blog.golang.org/json-and-go
- 2 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消