如何在 golang 中传递一个结构体作为参数?有我的代码:
package main
import (
"fmt"
)
type MyClass struct {
Name string
}
func test(class interface{}) {
fmt.Println(class.Name)
}
func main() {
test(MyClass{Name: "Jhon"})
}
当我运行它时,我收到这样的错误
# command-line-arguments
/tmp/sandbox290239038/main.go:12: class.Name undefined (type interface {} has no field or method Name)
有 play.golang.orgfiddle http://play.golang.org/p/do3YDFsyLD地址。
您正在寻找;
func test(class MyClass) {
fmt.Println(class.Name)
}
就目前情况而言,该方法识别class
作为实现空接口的某个对象(意味着在该范围内它的字段和方法完全未知),这就是您收到错误的原因。
你的另一个选择是这样的;
func test(class interface{}) {
if c, ok := class.(MyClass); ok { // type assert on it
fmt.Println(c.Name)
}
}
但在你的例子中没有理由这样做。仅当您要进行类型切换或有多个代码路径根据实际类型执行不同的操作时才有意义class
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)