关于Go 的一些问题?

如果你有更好的答案,请贴出来

希望你也能把平时遇到的问题反馈在下面,我会归档到这里来,以此进步


  • 为什么不可以对字典map的元素取地址?

      eg:  m := map[string]int{"a":1,"b":2}
           fmt.Printf("%p",&m["a"]) //这里为什么不能对map元素取地址?
  • 下面这几组方法调用中传递的指针还是值拷贝,返回的是值拷贝还是指针?

      slice
      func q1(){
          s := []string{"1","2"}
          fmt.Printf("%p",s)
          q3 := q2(s)
          fmt.Printf("%p",q3)
      }
      func q2(s1 []string)[]string{
          fmt.Printf("%p",s1)
          return s1
      }
      
      array
      func q1(){
          a := [...]string{"1","2"}
          fmt.Printf("%p",a)
          q3 := q2(a)
          fmt.Printf("%p",q3)
      }
      func q2(a [2]string)[2]string{
          fmt.Printf("%p",a)
          return a
      }
      
      
  • 能不能解释一下slice,map不可以使用 == 操作,而array却可以?

Dangerous

  • 向 nil map中设置值会导致错误,设置之前必须初始化.

    var m map[string]int
    m["a"] = 3 //panic: assignment to entry in nil map
    
  • 向 nil map中设置值会导致错误

    var m map[string]int
    m["a"] = 3 //panic: assignment to entry in nil map
    

reference:

暂无

阅读 1.8k
1 个回答
   eg:  m := map[string]int{"a":1,"b":2}
        fmt.Printf("%p",&m["a"]) //这里为什么不能对map元素取地址?

这个问题回答下:

因为当新添加数据到map,或者删除map中的数据,会导致map重新分配空间。这个指针就会泄露拉。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题