初始化struct中的字符串指针

时间:2017-03-04 10:15:41

标签: pointers go struct

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

1 个答案:

答案 0 :(得分:12)

无法获取常量值的地址(指向),这就是初始化失败的原因。如果您定义一个变量并传递其地址,那么您的示例将起作用。

type Config struct {
  Uri       *string
}

func init() {
  v := "my:default"
  var config = Config{ Uri: &v }
}