为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能在 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 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信