如何从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,该范围内的所有内容都将可用