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

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


...

role = "roles/cloudkms.publicKeyViewer"

func checkRole(key, serviceAccount, role string) bool {

...

return policy.HasRole(serviceAccount, role)

}

然后我收到错误“不能在 policy.HasRole 的参数中使用角色(类型字符串)作为类型“cloud.google.com/go/iam”.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

}


慕娘9325324
浏览 130回答 1
1回答

呼啦一阵风

您可以使用类型转换,如下所示:return policy.HasRole(serviceAccount, iam.RoleName(role))或者通过将角色声明为更简单iam.RoleNamefunc checkRole(key, serviceAccount, role iam.RoleName) bool {...   return policy.HasRole(serviceAccount, role)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go