登录
首页 >  Golang >  Go问答

函数中如何将字符串值转换为用户定义类型

来源:stackoverflow

时间:2024-03-02 11:30:24 182浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《函数中如何将字符串值转换为用户定义类型》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我编写了一个用于角色检查的函数:

...
role = "roles/cloudkms.publickeyviewer"
func checkrole(key, serviceaccount, role string) bool {
...
return policy.hasrole(serviceaccount, role)
}

然后我收到错误“无法将角色(类型字符串)用作“cloud.google.com/go/iam”类型。policy.hasrole 参数中的 rolename。

将角色值转换为自定义类型的正确方法是什么?

图书馆:

// 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)
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>