Go Newbie问题:我正在尝试使用默认值初始化以下结构。我知道如果" Uri"是一个字符串,而不是指向字符串的指针(* string)。但我需要这个指针来比较结构的两个实例,如果没有设置Uri将是nil,例如当我从json文件解组内容时。但是,如何将这样的结构正确初始化为"静态默认"?
type Config struct {
Uri *string
}
func init() {
var config = Config{ Uri: "my:default" }
}
上面的代码失败了
cannot use "string" (type string) as type *string in field value
答案 0 :(得分:12)
无法获取常量值的地址(指向),这就是初始化失败的原因。如果您定义一个变量并传递其地址,那么您的示例将起作用。
type Config struct {
Uri *string
}
func init() {
v := "my:default"
var config = Config{ Uri: &v }
}