语法找错题

写出以下代码出现的问题

package main
import (
    "fmt"
)
func main() {
    var x string = nil
    if x == nil {
        x = "default"
    }
    fmt.Println(x)
}

golang 中字符串是不能赋值 nil 的,也不能跟 nil 比较。

写出以下打印内容

   package main
   import "fmt"
   const (
       a = iota
       b = iota
   )
   const (
       name = "menglu"
       c    = iota
       d    = iota
   )
   func main() {
       fmt.Println(a)
       fmt.Println(b)
       fmt.Println(c)
       fmt.Println(d)
   }

找出下面代码的问题

上面的代码有严重的内存泄漏问题,出错的位置是 go fn(i),实际上代码执行后会启动 4 个协程,但是因为 ch 是非缓冲的,只可能有一个协程写入成功。而其他三个协程会一直在后台等待写入。

写出以下打印结果,并解释下为什么这么打印的。

golang 中的切片底层其实使用的是数组。当使用str1[1:] 使,str2str1 底层共享一个数组,这回导致 str2[1] = "new" 语句影响 str1

append 会导致底层数组扩容,生成新的数组,因此追加数据后的 str2 不会影响 str1

但是为什么对 str2 复制后影响的确实 str1 的第三个元素呢?这是因为切片 str2 是从数组的第二个元素开始,str2 索引为 1 的元素对应的是 str1 索引为 2 的元素。

写出以下打印结果

个人理解:指针类型比较的是指针地址,非指针类型比较的是每个属性的值。

写出以下代码的问题

数组只能与相同纬度长度以及类型的其他数组比较,切片之间不能直接比较。。

下面代码写法有什么问题?

golang中的map 通过key获取到的实际上是两个值,第一个是获取到的值,第二个是是否存在该key。因此不能直接通过key来赋值对象。

最后更新于