当前位置: 首页 > article >正文

【go从零单排】go中的nil到底是啥意思?

挪威特罗姆瑟夜景

Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

nil

在Go语言中,nil 是一个预定义的标识符,用于表示指针、切片、映射、通道、接口和函数的零值或空值。下面是 nil 在不同类型中的含义:

  1. 对于指针类型:nil 表示指针指向的是空地址,即没有指向任何有效的内存地址。

  2. 对于切片、映射、通道:nil 表示这些数据结构是空的,即没有分配任何元素或数据。

  3. 对于接口类型:nil 表示接口不包含任何值。

  4. 对于函数类型:nil 表示函数变量还没有被赋值。

在实际编程中,使用 nil 可以方便地表示某些数据结构的空值状态,而不需要使用特定的空值标记或者特殊值来表示空。在使用 nil 时需要注意以下几点:

  • 访问一个 nil 指针会导致运行时错误,因此在使用指针之前,需要确保它不是 nil
  • 对于切片、映射和通道,它们的零值就是 nil,因此在声明时不需要显式地初始化为 nil
  • 当一个接口值为 nil 时,它既不包含值也不包含具体类型。

总的来说,nil 在Go语言中是一个非常有用的概念,用于表示各种数据结构的空值状态。

指针类型

package main

import "fmt"

func main() {
	var ptr *int //var变量声明一个指针,int类型,不赋值时默认为nil

	if ptr == nil {
		fmt.Println("Pointer is nil")
	} else {
		fmt.Println("Pointer is not nil")
	}
}

切片

package main

import "fmt"

func main() {
    var s []int

    if s == nil {
        fmt.Println("Slice is nil")
    } else {
        fmt.Println("Slice is not nil")
    }
}

map

package main

import "fmt"

func main() {
    var m map[string]int

    if m == nil {
        fmt.Println("Map is nil")
    } else {
        fmt.Println("Map is not nil")
    }
}

interface

package main

import "fmt"

func main() {
    var i interface{}

    if i == nil {
        fmt.Println("Interface is nil")
    } else {
        fmt.Println("Interface is not nil")
    }
}

总结:

nil就是一个空的类型,针对不同的数据结构,没有值时都可以理解为nil。

掌握知识的最好方式就是教会别人,每篇文章都讲清楚一个知识点,欢迎留言我一起讨论。


http://www.kler.cn/a/384816.html

相关文章:

  • 基于IM场景下的Wasm初探:提升Web应用性能|得物技术
  • 计算机网络——HTTP篇
  • 【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
  • Jest项目实战(6):搭建文档网站
  • 基于Python的学生宿舍管理系统
  • 泷羽sec学习打卡-shodan扫描1
  • Hive中自定义函数的使用
  • js-v-for 指令来循环展示数组中的数据,并在每条数据后添加一个删除按钮 items.splice(index, 1)
  • linux命令使用案例_将查找结果复制/移动到对应文件夹下
  • 项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
  • 《C++类型转换:四种类型转换的规定》
  • java反序列化学习之CommonCollections3利用链的学习
  • (一)NodeJS环境安装、创建第一个Vue应用
  • C++入门基础知识140—【关于C++ 类构造函数 析构函数】
  • C++练习题(3)
  • ZABBIX API获取监控服务器OS层信息
  • 信息流投放账户、广告位置与优势
  • C++ vector
  • 代码随想录算法训练营第三十六天|Day36 动态规划
  • 蛋奶烙饼:美味与温暖的邂逅
  • Java图片转word
  • Elasticsearch-linux环境部署
  • 跨境电商独立站怎么建?如何收款?
  • CDGA|治理、技术、运营三管齐下构建高效数据管理体系
  • 【Linux】冯诺依曼体系、再谈操作系统
  • 内网部署web项目,外网访问不了?只有局域网能访问!怎样解决?