如何从Golang中的结构访问特定字段

如何从Golang中的结构访问特定字段,go,struct,Go,Struct,假设我有以下代码: type User struct { ID string Username string Name string Password string } 我想做的是创建另一个结构,它可以从用户结构访问某些字段,而不是访问所有字段,以防止人们看到密码,例如。 这不起作用: type Note struct { ID string Text

假设我有以下代码:

type User struct {
    ID              string
    Username        string
    Name            string
    Password        string
}
我想做的是创建另一个结构,它可以从用户结构访问某些字段,而不是访问所有字段,以防止人们看到密码,例如。 这不起作用:

type Note struct {
    ID         string
    Text       string
    UserID     User.ID          
}
有没有办法做到这一点,或者我只是创建Note.UserID字段,使其具有与用户结构中的ID相同的数据类型

可以导出标识符以允许从另一个标识符访问它 包裹如果出现以下两种情况,则导出标识符:

标识符名称的第一个字符是Unicode大写 字母(Unicode类“Lu”);及

标识符在包块中声明或是字段名 或方法名

不会导出所有其他标识符

User
它自己的包,不要导出密码

比如说,

package user

type User struct {
    ID       string
    Username string
    Name     string
    password string
}

func (u *User) IsPassword(password string) bool {
    return password == u.password
}

假设类型在不同的包中,可以通过导出和不导出字段来实现这一点。名称以小写字母开头的字段不会导出,这意味着它在声明/定义它的包外不可见。因此,在这种情况下,如果用户存在于一个包中,则将其称为
user
,而另一个类型在另一个包中声明,您可以通过将定义更改为来完成属性的“隐藏”

type User struct {
    ID              string
    username        string
    name            string
    password        string
}
如果这两种类型位于同一个包中,则无法将字段设置为private/hidden/ect,该范围内的所有内容都将可用