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

I would like to initialize multiple variables in a struct using the same function like so:

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   
}

however, I can not due to having to use : to initialize variables when creating a struct, is there any way I can do something that is valid yet like the code above?

Using composite literal you can't.

Using tuple assignment you can:

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

Testing it:

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

Output (try it on the Go Playground):

&{4 6}