我正在創(chuàng)建一個 IRC 機器人,使用 Go 作為第一個項目來掌握該語言。bot 功能之一是從 TVmaze API 抓取數(shù)據(jù)并顯示在頻道中。我導入了一個 env 包,它允許機器人管理員定義輸出的顯示方式。例如 SHOWSTRING="#showname# - #status# – #network.name#"我正在嘗試向它添加功能,以便管理員可以使用 IRC 格式化功能,\u0002 this is bold \u0002例如可以訪問該功能。我有一個函數(shù)可以生成正在返回并顯示在通道中的字符串。func generateString(show Show) string { str := os.Getenv("SHOWSTRING") r := strings.NewReplacer( "#ID#", string(show.ID), "#showname#", show.Name, "#status#", show.Status, "#network.name#", show.Network.Name, ) result := r.Replace(str) return result}從我讀過的內(nèi)容來看,我認為我需要使用rune數(shù)據(jù)類型而不是字符串,然后在輸出之前將符文轉換為字符串。我正在使用https://github.com/thoj/go-irceven包與 IRC 交互。雖然我認為使用rune是正確的方法,但我嘗試了一些讓我感到困惑的事情。如果我\u0002從 env添加到 SHOWSTRING,它會返回\u0002House\u0002 - Ended - Fox. 我這樣做con.Privmsg(roomName, tvmaze.ShowLookup('house'))但是,如果我嘗試con.Privmsg(roomName, "\u0002This should be bold\u0002")它輸出粗體文本。這里最好的選擇是什么?如果它將字符串轉換為符文,然后再轉換回字符串,我該怎么做?
1 回答

慕運維8079593
TA貢獻1876條經(jīng)驗 獲得超5個贊
我需要strconv.Unquote()在函數(shù)中返回時使用。
新的 generateString 函數(shù)現(xiàn)在輸出正確的字符串,如下所示
func generateString(show Show) string {
str := os.Getenv("SHOWSTRING")
r := strings.NewReplacer(
"#ID#", string(show.ID),
"#showname#", show.Name,
"#status#", show.Status,
"#network.name#", show.Network.Name,
)
result := r.Replace(str)
ret, err := strconv.Unquote(`"` + result + `"`)
if err != nil {
fmt.Println("Error unquoting the string")
}
return ret
}
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消