登录
首页 >  Golang >  Go问答

如何将结构作为参数传递给函数?

来源:Golang技术栈

时间:2023-04-14 06:07:59 425浏览 收藏

本篇文章给大家分享《如何将结构作为参数传递给函数?》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

如何将结构传递为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.org小提琴地址。

正确答案

您正在寻找;

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.

以上就是《如何将结构作为参数传递给函数?》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表