使用类型:
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)