我正在使用一个用 go 编写的应用程序,它获取一个键列表并从数据中提取值(如果该键存在于数据中)。
但是,此函数仅接受字符串值 - 不幸的是,我的数据同时具有数组和数字作为值(这无法更改,它来自 Azure OIDC 登录)
因此,与其抱怨,我想我会卷起袖子尝试自己修复它(之前从未写过一行“go”)
所以,这是原来的功能
func extractMetadata(logger log.Logger, allClaims map[string]interface{}, claimMappings map[string]string) (map[string]string, error) {
metadata := make(map[string]string)
for source, target := range claimMappings {
if value := getClaim(logger, allClaims, source); value != nil {
strValue, ok := value.(string)
if !ok {
return nil, fmt.Errorf("error converting claim '%s' to string", source)
}
metadata[target] = strValue
}
}
return metadata, nil
}
我相信有问题的线是
strValue, ok := value.(string)
因为那是我得到错误的地方。
如果我将其更改为
strValue, ok := fmt.Sprintf("%v",value)(a)工作和(b)安全吗?..
(fmt 已经被代码导入了)
go 中是否有更优雅的解决方案?
SMILET
慕桂英3389331
相关分类