Go语言 如何将null值设置为结构体默认值

w41d8nur  于 2022-12-07  发布在  Go
关注(0)|答案(3)|浏览(383)

我试图将null值作为默认值添加到结构中。是否有任何方法可以将null值作为默认值添加?

type Values struct {
    FirstValue string `default:"My First Value"`
    SecondValue string `default:nil` // something like that
}
gk7wooem

gk7wooem1#

Go语言中的字符串不能是nil,它们的零值只是一个空字符串-""
请参阅https://tour.golang.org/basics/12
此外,Go语言中没有default标记,因为每种类型都有一个零值,这个零值被用作“默认值”。但是,Go语言中有一些模式允许你设置不同的“默认值”,参见How to set default values in Go structs

9wbgstp7

9wbgstp72#

在Go语言中,你不能访问未初始化的内存,如果你没有在变量声明中提供初始值,变量会自动初始化为0。
而且,你不能为结构域定义默认值,除非用复合文字,否则所有的域都将得到零值。
string类型的零值是空字符串""。如果需要存储空值,请使用指向string的指针。指针的零值是nil

type Values struct {
    FirstValue  string
    SecondValue *string
}
qf9go6mv

qf9go6mv3#

也许可以试试这种方式:)

package main

import (
    "encoding/json"
    "fmt"
)

type Hoho struct {
    Name *string `json:"name"`
}

func main() {
    var nama string = "ganang"
    var h Hoho
    h.Name = NullString(nama)

    wo, _ := json.Marshal(h)
    fmt.Print(string(wo))
}

func NullString(v string) *string {
    if v == "" {
        return nil
    }

    return &v
}

相关问题