doujin8673
2017-03-04 10:15
浏览 73
已采纳

在结构中初始化字符串指针

This question already has an answer here:

Go Newbie question: I am trying to init the following struct, with a default value. I know that it works if "Uri" is a string and not pointer to a string (*string). But i need this pointer for comparing two instances of the struct, where Uri would be nil if not set, e.g. when i demarshal content from a json file. But how can I initialize such a struct properly as a "static default"?

type Config struct {
  Uri       *string
}

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

The code above fails with

cannot use "string" (type string) as type *string in field value
</div>

图片转代码服务由CSDN问答提供 功能建议

此问题已经存在 在这里有答案

  • 如何在Go语言中使用文字* int64? 2个答案

    转到新手问题:我正在尝试初始化以下内容 struct,具有默认值。 我知道,如果“ Uri”是一个字符串而不是一个指向字符串(* string)的指针,它将起作用。 但是我需要这个指针来比较该结构的两个实例,如果未设置,则Uri将为nil。 当我从json文件中整理内容时。 但是,如何正确地将这样的结构初始化为“静态默认值”?

      type Config struct {
     Uri * string 
    } 
     
    func init(){  
     var config = Config {Uri:“ my:default”} 
    } 
       
     
     

    上面的代码失败

     不能在字段值中使用“字符串”(字符串类型)作为* string类型
       
     
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongxing7318 2017-03-04 10:20
    已采纳

    It's not possible to get the address (to point) of a constant value, which is why your initialization fails. If you define a variable and pass its address, your example will work.

    type Config struct {
      Uri       *string
    }
    
    func init() {
      v := "my:default"
      var config = Config{ Uri: &v }
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题