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

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

為什么我不能在 Golang 地圖中輸入字符串?

為什么我不能在 Golang 地圖中輸入字符串?

Go
烙印99 2021-10-18 17:02:00
我正在編寫一個函數來刪除字符串中的重復字符。這是我的方法。當我運行以下測試時,為什么會出現此錯誤?我是 Go 的新手,習慣了更動態的語言,比如 Ruby/Python。panic: assignment to entry in nil map [recovered]    panic: assignment to entry in nil map源碼func removeDuplicate(s string) string {  var m map[string]int    var c_string []string = strings.Split(s, "")    for i :=0; i < len(c_string); i++ {      m[c_string[i]] = 0    }    for i :=0; i < len(c_string); i++ {      m[c_string[i]] = m[c_string[i]] + 1    }  var (        result string = ""    )    for i :=0; i < len(c_string); i++ {      if m[c_string[i]] < 1 {      result  = result + c_string[i]        }    }    return result}source_test.gofunc TestRemoveDuplicateChars(t *testing.T) {  got := removeDuplicateChars("abbcde")    if got != "abcde" {        t.Fatalf("removeDuplicateChars fails")    }}
查看完整描述

1 回答

?
ITMISS

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

因為您實際上還沒有 initilize/allocated m,所以您只是聲明了它。做這個;var m map[string]int進入m := map[string]int{}

在同一個語句中進行初始化和賦值。您還可以添加另一行m = make(map[string]int)來防止錯誤,盡管我個人更喜歡壓縮語法。

僅供參考,您的代碼在此行中嘔吐;m[c_string[i]] = 0,將錯誤消息與上述信息結合起來時,錯誤消息應該是有意義的。


查看完整回答
反對 回復 2021-10-18
  • 1 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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