2 回答

TA貢獻1862條經(jīng)驗 獲得超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 提到的,使用指針制造者初始化有點麻煩,但你可以使用我上面提到的相同類型的構(gòu)造;聲明一個字符串,&在復合文字中使用該字符串。

TA貢獻1735條經(jīng)驗 獲得超5個贊
您將不得不*string改用并創(chuàng)建一個輔助函數(shù)以使其更容易,大致如下:
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 關(guān)注
- 522 瀏覽
添加回答
舉報