【问题标题】:Assigning a pointer field to a casted value将指针字段分配给强制转换的值
【发布时间】:2018-05-12 14:12:51
【问题描述】:

我确定这只是我不知道的语法,但这是带有指针字段的结构:

type someStruct struct {
    StringVal string     `json:"val_str"`
    IntVal    *int64     `json:"val_int"`
}

我试图像这样返回这个结构的一个实例,其中aValue 是一个int64 值,我试图让IntVal 指针指向它:

return someStruct{IntVal: &(int64(aValue))}

我收到此错误:

cannot take the address of int64(d)

任何想法如何实现这一目标?

【问题讨论】:

    标签: pointers go


    【解决方案1】:

    您需要先将 int64 分配给一个变量:

    aValueTmp := int64(aValue)
    return someStruct{IntVal: &aValueTmp}
    

    【讨论】:

      【解决方案2】:

      最简单的方法——实例化一个变量并给出一个指向它的指针。或者一行:

      return someStruct{
          IntVal: func(i int64) *int64 {return &i}(aValue)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-02
        • 2013-12-10
        • 1970-01-01
        相关资源
        最近更新 更多