Golang 零值、空值与空结构的使用小结

 更新时间:2026年02月05日 09:08:16   作者:Penge666  
本文主要介绍了Golang 零值、空值与空结构的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

零值

  • 对于值类型:布尔类型为 false, 数值类型为 0,字符串为 "",数组和结构会递归初始化其元素或字段,即其初始值取决于元素或字段。
  • 对于引用类型: 均为 nil,包括指针 pointer,函数 function,接口 interface,切片 slice,管道 channel,映射 map。

nil

空值(nil) :在Go语言中,nil是一个预定义的标识符,用于表示指针、通道(channel)、映射(map)、切片(slice)、函数以及接口类型的“零值”。它相当于这些类型的“无”或“不存在”。例如,一个nil指针不指向任何内存地址,而一个nil通道不连接任何发送者或接收者。

  • 初始化未使用的指针或引用类型变量。
  • 检查一个变量是否已被初始化或有效。
  • 在错误处理中,表示一个操作没有返回错误。

空结构

作用二

使用 chan struct{} 代替 chan bool 在 goroutines 之间传递信号。使用 bool 容易让人不理解该值,true or false,但是使用 chan struct{} 就很清楚,我们不在乎值,只关心发生的事儿,更容易表达清楚一些。

作用一

用来强制使用字段名来初始化结构体,防止未命名的初始化方式。

正常的结构体

type Q struct {
    X, Y int
}

// 两种初始化方式都可以
q1 := Q{X: 1, Y: 1}  // 推荐:使用字段名
q2 := Q{1, 1}        // 不推荐:按位置初始化

添加 _ struct{} 后的结构体

type Q struct {
    X, Y int
    _    struct{}  // 添加这个字段
}

// 现在只能这样初始化
q1 := Q{X: 1, Y: 1}  // ✅ 编译通过

// 这样会报错
q2 := Q{1, 1}        // ❌ 编译错误:too few values in struct initializer

到此这篇关于Golang 零值、空值与空结构的使用小结的文章就介绍到这了,更多相关Golang 零值、空值与空结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言微服务中实现链路追踪

    Go语言微服务中实现链路追踪

    在微服务架构中,链路追踪技术可以帮助我们跟踪请求在各个服务之间的传播路径,本文就来介绍一下Go语言微服务中实现链路追踪,感兴趣的可以了解一下
    2024-12-12
  • Golang设计模式之原型模式详细讲解

    Golang设计模式之原型模式详细讲解

    如果一个类的有非常多的属性,层级还很深。每次构造起来,不管是直接构造还是用建造者模式,都要对太多属性进行复制,那么有没有一种好的方式让我们创建太的时候使用体验更好一点呢? 今天的文章里就给大家介绍一种设计模式,来解决这个问题
    2023-01-01
  • go语言中的json与map相互转换实现

    go语言中的json与map相互转换实现

    本文主要介绍了go语言中的json与map相互转换实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 浅析Go语言中的map数据结构是如何实现的

    浅析Go语言中的map数据结构是如何实现的

    在 Go 中,map 是一种用于存储键值对的数据结构,它提供了一种快速查找和访问数据的方式,下面我们就来看看Go语言中是如何实现map数据结构的吧
    2024-03-03
  • Go语言基础结构体用法及示例详解

    Go语言基础结构体用法及示例详解

    这篇文章主要为大家介绍了Go语言基础结构体的用法及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Go 修改map slice array元素值操作

    Go 修改map slice array元素值操作

    这篇文章主要介绍了Go 修改map slice array元素值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 使用Go创建一个TCP服务器的操作步骤

    使用Go创建一个TCP服务器的操作步骤

    在网络编程中,TCP 是最常见的传输协议之一,Go 提供了 net 包,可以方便地实现 TCP 服务器与客户端通信,本篇将以实战形式演示如何用 Go 创建一个 TCP 服务器,并让多个客户端与之通信,需要的朋友可以参考下
    2025-08-08
  • Go 结构体、数组、字典和 json 字符串的相互转换方法

    Go 结构体、数组、字典和 json 字符串的相互转换方法

    今天小编就为大家分享一篇Go 结构体、数组、字典和 json 字符串的相互转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 深入剖析Go语言编程中switch语句的使用

    深入剖析Go语言编程中switch语句的使用

    这篇文章主要介绍了Go语言编程中switch语句的使用,是Go语言入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Golang使用pprof检查内存泄漏的全过程

    Golang使用pprof检查内存泄漏的全过程

    pprof 是golang提供的一款分析工具,可以分析CPU,内存的使用情况,本篇文章关注它在分析内存泄漏方面的应用,本文给大家介绍了Golang使用pprof检查内存泄漏的全过程,文中通过代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02

最新评论