如何向Golang结构添加新的布尔属性并将默认值设置为true?

时间:2016-02-12 09:25:47

标签: go struct datastore

我有一个与实体对应的用户结构。如何添加新属性active并将默认值设置为true

我是否可以通过一些简单的方法为所有现有实体将该属性的值设置为true

type User struct {
    Id              int64     `json:"id"`
    Name            string    `json:"name"`
}

奖金问题:我不太了解结构中的语法。这三列代表什么? JSON字符串在它们周围有什么作用?

2 个答案:

答案 0 :(得分:1)

//You can't change declared type.
type User struct {
    Id              int64     `json:"id"`
    Name            string    `json:"name"`
}
//Instead you construct a new one embedding existent
type ActiveUser struct {
    User
    Active bool
}
//you instantiate type literally
user := User{1, "John"}
//and you can provide constructor for your type
func MakeUserActive(u User) ActiveUser {
    auser := ActiveUser{u, true}
    return auser
}
activeuser := MakeUserActive(user)

您可以看到它有效https://play.golang.org/p/UU7RAn5RVK

答案 1 :(得分:0)

在将结构类型传递给变量时,必须将默认值设置为true,但这意味着您需要使用新的Active字段扩展该结构。

type User struct {
    Id              int64     `json:"id"`
    Name            string    `json:"name"`
    Active          bool
}

user := User{1, "John", true}

json:"id"表示您将json解码的对象字段映射到结构类型中的字段id。实际上,您将json字符串反序列化为对象字段,稍后您可以映射到结构中的特定字段。