在Golang中,json解析是非常常见的一个功能,我们经常需要从json中解析数据,然后使用它们进行其他的操作。但是,在实际开发中,json中可能存在一些我们没有预料到的字段,这时候我们需要对这些字段设置一些默认值,以保证程序的正常运行。

在Golang中,我们可以使用“omitempty”来设置struct中一个字段的默认值。

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age,omitempty"`
}

上面的代码中,Person结构体中的Age字段设置为“omitempty”,这意味着如果在解析json时没有找到Age字段,它将默认为0。

如果我们想要设置非零的默认值,我们可以使用omitempty的另一个技巧:

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age,omitempty"`
}
func NewPerson(name string) *Person {
	p := &Person{
Name: name,
	}
	p.SetDefault()
	return p
}
func (p *Person) SetDefault() {
	if p.Age == 0 {
p.Age = 18
	}
}

上面的代码中,我们定义了一个SetDefault方法来设置Age字段的默认值。在NewPerson函数中,我们通过调用SetDefault方法来设置Person结构体的默认值。

在实际开发中,我们只需要在解析json之前,在结构体的默认字段中调用SetDefault方法,就可以保证我们的程序运行正常。