认识误区

interface{} nil判断

说来惭愧,第一次知道interface{}的空值nil判断与想象中不一样。

package main

import "fmt"

func main() {
  var v1 interface{}
  var v2 interface{} = (*int)(nil)
  var v3 interface{} = 2
  // true false false
  fmt.Println(v1 == nil, v2 == nil, v3 == nil)
}

interface{}包括{type,value},需要额外类型为空时,才等于nil。

空map。可以读,但不可以写

func main() {
  var m1 map[int]int
  v1, ok := m1[1]
  v2 := m1[2]
  println(v1, ok, v2) // print 0 false 0

  m1[1] = 1 // panic
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,750评论 0 38
  • 接口简介 Go 语言不是一种“传统” 的面向对象编程语言, 所以 Go 语言并没有类和继承的概念。但是 Go 语言...
    副班长国伟阅读 3,907评论 0 2
  • 标签(空格分隔): 编程 Go官方文档 Using the tour 1.1 Hello, 世界 Welcome...
    uangianlap阅读 5,443评论 0 5
  • Notes Section 2, Program Structure nested block in if-els...
    keysaim阅读 4,983评论 0 1
  • 民间有句俗语:“早上立了秋,晚上凉飕飕。”立秋,不仅预示着炎热的夏天即将过去,秋天即将来临,也表示草木开始结果孕子...
    荣事达吴家成阅读 1,135评论 0 2

友情链接更多精彩内容