Golang - 将struct作为参数传递给函数

时间:2015-05-25 23:02:01

标签: function go

我必须解析一些嵌套的JSON,它转换为Go类型,如下所示:

type Config struct {
Mail           struct {
                   From     string
                   To       string
                   Password string
               }
Summary        struct {
                   Send     bool
                   Interval int
               }
}

现在我想为每个键调用一个函数(Mail,Summary),我试试这样: utils.StartNewMailer(config.Mail) 问题是,我如何构造被调用函数,我试图镜像Mail结构(并称之为mailConfig),因为我不能将任意结构作为参数传递。<登记/> func StartNewMailer(conf mailConfig){ //...,但这也不起作用,我得到以下编译器错误消息: cannot use config.Mail (type struct { From string; To string; Password string }) as type utils.mailConfig in argument to utils.StartNewMailer
我是否必须将每个值传递给被调用的函数,或者有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

应导出

utils.mailConfig个字段,如Config类型的文字结构字段。

type mailConfig struct {
    From     string
    To       string
    Password string
}

我建议将内部结构声明为类型本身而不是使用结构文字。

type Mail struct {
    From     string
    To       string
    Password string
}

type Summary struct {
    Send     bool
    Interval int
}

type Config struct {
    Mail
    Summary
}

func StartNewMailer(Mail mailConfig)