如何在struct初始化器中使用指针类型?

时间:2014-07-09 02:53:41

标签: go

当它是一个数字类型的引用类型别名时,我无法弄清楚如何初始化结构字段:

package main

import (
  "fmt"
  "encoding/json"
)

type Nint64 *int64

type MyStruct struct {
   Value Nint64
}

func main() {
  data, _ := json.Marshal(&MyStruct{ Value : ?? 10 ?? })
  fmt.Println(string(data))
}

2 个答案:

答案 0 :(得分:1)

您不能,您将需要添加额外的步骤playground

func NewMyStruct(i int64) *MyStruct {
    return &MyStruct{&i}
}

func main() {
    i := int64(10)
    data, _ := json.Marshal(&MyStruct{Value: Nint64(&i)})
    fmt.Println(string(data))
    //or this
    data, _ = json.Marshal(NewMyStruct(20))
    fmt.Println(string(data))
}

答案 1 :(得分:1)

我认为你不想引用int64的地址......

package main

import (
    "encoding/json"
    "fmt"
)

type Nint64 int64

type MyStruct struct {
    Value Nint64
}

func main() {
    data, _ := json.Marshal(&MyStruct{Value: Nint64(10)})

    fmt.Println(string(data))
}

http://play.golang.org/p/xafMLb_c73