如何在结构类型内联中初始化指针成员?

Ale*_*x B 1 go

使用类型:

type A struct {
   B int, C *int
}
Run Code Online (Sandbox Code Playgroud)

如何在不创建临时值的情况下将指针成员初始化为非零值内联?

a := A{
    B: 42,
    C: ?,
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*dge 11

对于您给出的具体示例,您可以在不引入其他语句的情况下进行限制.

如果要C指向初始化的整数变量,则需要一个额外的语句来定义该变量,因为您不能获取整数文字的地址(&42即将是一个错误).

如果您只想初始化C为指向新零值的指针,那么您很幸运并且可以将其设置为new(int).

如果您正在处理具有初始化语法的其他类型,那么您也会很幸运.例如,如果C是指向结构的指针,则可以将其初始化为&TheStruct{...}.

如果这些都不合适,并且您实际上只是在初始化*int变量的代码清晰度之后,辅助函数可能符合您的要求.例如:

func makeIntPointer(v int) *int {
    return &v
}
Run Code Online (Sandbox Code Playgroud)