第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在go中將map的所有值轉換為字符串

在go中將map的所有值轉換為字符串

Go
青春有我 2022-06-01 17:36:31
我正在使用一個用 go 編寫的應用程序,它獲取一個鍵列表并從數(shù)據(jù)中提取值(如果該鍵存在于數(shù)據(jù)中)。但是,此函數(shù)僅接受字符串值 - 不幸的是,我的數(shù)據(jù)同時具有數(shù)組和數(shù)字作為值(這無法更改,它來自 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 中是否有更優(yōu)雅的解決方案?
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

value.(string)正在做類型斷言而不是類型轉換 它檢查是否value是一個字符串并返回相同的值以及一個布爾標志。

要將接口轉換為字符串,您可以使用它來格式化它,Sprintf這將返回單個字符串值,

strValue := fmt.Sprint("%v", value)

安全性取決于您的應用程序。如果您以后可以解析數(shù)據(jù)并解釋數(shù)字和數(shù)組的含義,那么您應該沒問題。

由于它看起來像是簡單存儲信息的元數(shù)據(jù)存儲,因此格式化字符串應該沒問題。


查看完整回答
反對 回復 2022-06-01
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

fmt.Sprintf("%v",value)安全地將任何值格式化為字符串。一個更簡單的調用是fmt.Sprint(value). 這兩個調用都使用類型的默認格式,這可能是也可能不是您想要的格式。



查看完整回答
反對 回復 2022-06-01
  • 2 回答
  • 0 關注
  • 605 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號