2 回答
TA贡献1862条经验 获得超6个赞
为了用值 'null' 表示该类型,它必须是一个指针。问题不在于您不能使用 null,而是字符串不能具有该值。这是我在操场上制作的一个简单示例;https://play.golang.org/p/SXO5sBl2mR
package main
import "fmt"
import "encoding/json"
type Test struct {
A *string
B *string
}
func main() {
s := "Something"
t := Test{A:&s, B:nil}
b, err := json.Marshal(t)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(b))
}
正如 DaveC 提到的,使用指针制造者初始化有点麻烦,但你可以使用我上面提到的相同类型的构造;声明一个字符串,&在复合文字中使用该字符串。
TA贡献1735条经验 获得超5个赞
您将不得不*string改用并创建一个辅助函数以使其更容易,大致如下:
func main() {
chiefTitles := []*string{sP("CEO"), sP("CFO"), nil, sP("CMO")}
b, _ := json.Marshal(JobTitles{chiefTitles})
fmt.Println(string(b))
}
type JobTitles struct {
Titles []*string `json:"titles"`
}
func sP(s string) *string {
return &s
}
- 2 回答
- 0 关注
- 465 浏览
添加回答
举报