亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 Golang 中動態構建格式化字符串

在 Golang 中動態構建格式化字符串

Go
慕村9548890 2021-12-06 17:10:49
我正在嘗試在 Go 中動態創建格式化字符串。這個想法是使用格式類型創建地圖。然后循環遍歷它們以輸出各種類型。最終結果是查看格式如何影響輸出。(我很欣賞這個例子會產生相同的輸出,但我會f隨著時間的推移更改為其他類型)下面是一個例子:import (    "fmt"    "strings")var formats = []string{"%f", "%v"}var f float32 = 1 << 24func main() {    for format := range formats {        // Generate formatting string here        parts := "%q => " + format + "\n"        fmt.Printf(parts, format, f)    }}編譯器在這一parts:行抱怨 int() 轉換:在第 11 行,文件 ch3/floating_point.go 無法將 "%q => " 轉換為類型 int在第 11 行,文件 ch3/floating_point.go 無效操作:"%q => " + format`(字符串和整數類型不匹配)我曾嘗試加入字符串,但沒有運氣:parts:= strings.Join([]string{"%q =>",format,"\n"), " ")fmt.Printf(parts,format,f)也fmt.Fprintf沒有幫助:for format := range formats {      // Generate formatting string here      parts := fmt.Fprintf("%q => " + format, format, f)      fmt.Println(parts)    }
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

問題出在您的for format := range formats構造中。請記住,這range formats將返回兩個值:切片的實際值 * 及其索引(這是第一個值)。所以"%q => " + format + "\n"實際上會嘗試"%s => "與數字迭代索引連接。


如果要迭代切片中包含的值,請使用以下循環:


for _, format := range formats {

    // ...

}


查看完整回答
反對 回復 2021-12-06
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

請參閱golang For和空白標識符


如果您在數組、切片、字符串或映射上循環,或從通道讀取,范圍子句可以管理循環。


for key, value := range oldMap {

    newMap[key] = value

}

使用數組進行范圍的正確方法


for index, value := range formats {

如果你想跳過索引做


for _, value := range formats {


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號