使用一个函数在结构中初始化多个值

时间:2016-06-24 06:24:44

标签: go struct

我想使用相同的函数初始化结构中的多个变量,如下所示:

type temp struct {
    i int
    k int
}

func newtemp(age int) *temp{
    return &temp{
        i, k := initializer(age)
    }
}
func initializer(age int)(int, int){
    return age * 2, age * 3   
}

但是,我不能因为在创建结构时必须使用:来初始化变量,有什么方法可以做一些有效的事情,就像上面的代码一样?

1 个答案:

答案 0 :(得分:5)

使用composite literal你不能。

使用元组assignment,您可以:

func newtemp(age int) *temp{
    t := temp{}
    t.i, t.k = initializer(age)
    return &t
}

测试它:

p := newtemp(2)
fmt.Println(p)

输出(在Go Playground上尝试):

&{4 6}