如何解决如何在函数中将字符串值转换为自定义类型
我已经编写了一个角色检查功能:
...
role = "roles/cloudkms.publicKeyViewer"
func checkRole(key,serviceAccount,role string) bool {
...
return policy.HasRole(serviceAccount,role)
}
然后我收到错误消息“无法将角色(类型字符串)用作类型“ cloud.google.com/go/iam”。policy.HasRole的参数中的角色名称。
将角色值转换为自定义类型的正确方法是什么?
// A RoleName is a name representing a collection of permissions.
type RoleName string
// Common role names.
const (
Owner RoleName = "roles/owner"
Editor RoleName = "roles/editor"
Viewer RoleName = "roles/viewer"
)
const (
// AllUsers is a special member that denotes all users,even unauthenticated ones.
AllUsers = "allUsers"
// AllAuthenticatedUsers is a special member that denotes all authenticated users.
AllAuthenticatedUsers = "allAuthenticatedUsers"
)
// HasRole reports whether member has role r.
func (p *Policy) HasRole(member string,r RoleName) bool {
return memberIndex(member,p.binding(r)) >= 0
}
解决方法
您可以按以下方式使用类型转换:
return policy.HasRole(serviceAccount,iam.RoleName(role))
或更简单地通过将角色声明为iam.RoleName
func checkRole(key,serviceAccount,role iam.RoleName) bool {
...
return policy.HasRole(serviceAccount,role)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。