我正在從“Head First Go”學習 Go 語言,并在第 2 章遇到了一個示例package mainimport ( "fmt" "strings")func main(){ var broken string = "Go# R#cks!" //**Below line doesn't work, getting error as shown after the program :**- var replacer strings.Replacer = strings.NewReplacer("#", "o") // Whereas this line works perfectly replacer := strings.NewReplacer("#", "o") var fixed string = replacer.Replace(broken) fmt.Println(replacer.Replace(fixed))}命令行參數 ./hello.go:10:6: 不能使用 strings.NewReplacer("#", "o") (type *strings.Replacer) 作為類型 strings.Replacer 賦值
2 回答

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
strings.NewReplacer("#", "o")
返回指針*strings.Replacer
。所以這條線應該是
var replacer *strings.Replacer = strings.NewReplacer("#", "o")
鏈接到工作程序: https: //play.golang.org/p/h1LOC-OUoJ2

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
的定義strings.NewReplacer
是func NewReplacer(oldnew ...string) *Replacer
。因此該函數返回一個指向Replacer的指針(有關指針的更多信息,請參見教程)。
在語句中var replacer strings.Replacer = strings.NewReplacer("#", "o")
,您正在定義一個具有類型的變量,strings.Replacer
然后嘗試為其分配一個類型的值*strings.Replacer
。由于這是兩種不同的類型,編譯器會報告錯誤。解決方法是使用正確的類型var replacer *strings.Replacer = strings.NewReplacer("#", "o")
(playground)。
replacer := strings.NewReplacer("#", "o")
工作正常,因為當使用短變量聲明時,編譯器會*strings.Replacer
為您確定類型 ( )。
- 2 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消