为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕莱坞森 2021-12-13 18:46:49
假设我有以下代码:type User struct {    ID              string    Username        string    Name            string    Password        string}例如,我想要做的是创建另一个可以访问 User 结构中某些字段的结构,而不是访问所有字段,以防止人们看到密码。这不起作用:type Note struct {    ID         string    Text       string    UserID     User.ID          }有什么办法可以做到这一点,还是我只是创建 Note.UserID 字段以使其具有与 User 结构中的 ID 相同的数据类型?
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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


type User struct {

    ID              string

    username        string

    name            string

    password        string

}

如果这两种类型存在于同一个包中,则无法将字段设为私有/隐藏/等,所有内容都将在该范围内可用。


查看完整回答
反对 回复 2021-12-13
?
月关宝盒

TA贡献1772条经验 获得超5个赞

Go 编程语言规范

导出的标识符

可以导出标识符以允许从另一个包访问它。如果同时满足以下条件,则会导出标识符:

标识符名称的第一个字符是 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

}


查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信