gpt4 book ai didi

go - 结构属性的动态标识符

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:34 24 4
gpt4 key购买 nike

一个用户有许多 id 字段 - 每种类型的社交登录一个:

type User struct {
Name string
Github_id string
Facebook_id string
Google_id string
}

我有存储 providerid 的变量:

provider := "github" //could be facebook or google too
id := "12345"

和一个用户:

var user User
user.Name = "Bob"

但是我怎样才能将 id 分配给正确的属性呢?我试过:

if provider == "github" {
field := "Github_id"
user.field = id //and also user[field] = id
}

但到目前为止还没有成功。

附加说明

我的用户可能有多个社交登录帐户,所以我不能只使用一个 social_id 属性来解决这个问题。

最佳答案

在这种情况下,为了填充正确的字段而对结构执行反射似乎有点矫枉过正。

我建议在您的 User 结构中有一个映射字段来保存所有社交 ID。示例:

type User struct {
Name string
IDs map[string]string
}

func NewUser() *User {
return &User{
IDs: make(map[string]string),
}
}

用法:

provider := "github" // could be facebook or google too
id := "12345"

user := NewUser()
user.Name = "Bob"
user.IDs[provider] = id

关于go - 结构属性的动态标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com