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 零值、空值与空结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang map实现原理浅析

    Golang map实现原理浅析

    Go中Map是一个KV对集合,下面这篇文章主要给大家介绍了关于Golang中map探究的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-12-12
  • Go语言实现生成样式美观的PDF文件

    Go语言实现生成样式美观的PDF文件

    使用 Go 语言生成样式美观的 PDF 文件是一个常见的需求,尤其是在报告生成、发票、合同等场景中,下面就跟随小编一起来学习一下具体实现方法吧
    2025-01-01
  • golang第三方库mux的实现

    golang第三方库mux的实现

    Gorilla/mux 是 Go 语言中功能更全面的路由库,支持参数匹配、正则、中间件、子路由分组等,本文主要介绍了golang第三方库mux的实现,感兴趣的可以了解一下
    2025-06-06
  • 深入理解GoLang并发与并行

    深入理解GoLang并发与并行

    本文主要介绍了GoLang并发与并行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • golang中net的tcp服务使用

    golang中net的tcp服务使用

    这篇文章主要介绍了golang中net的tcp服务使用,文章通过服务端监听端口 展开主题的详细内容,具有一定的参考价值,需要的 小伙伴可以参考一下
    2022-04-04
  • Golang 语言极简类型转换库cast的使用详解

    Golang 语言极简类型转换库cast的使用详解

    本文我们通过 cast.ToString() 函数的使用,简单介绍了cast 的使用方法,除此之外,它还支持很多其他类型,在这没有多多介绍,对Golang 类型转换库 cast相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • 轻松读懂Golang中的数组和切片

    轻松读懂Golang中的数组和切片

    这篇文章主要给大家介绍了关于Golang中数组和切片的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者Golang具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Go项目怎么使用枚举

    Go项目怎么使用枚举

    枚举是一种很重要的数据类型,本文主要介绍了Go项目怎么使用枚举,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Go语言中CGO的使用实践

    Go语言中CGO的使用实践

    本文主要介绍了Go语言中CGO的使用实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Go语言中字符串的查找方法小结

    Go语言中字符串的查找方法小结

    这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下
    2015-10-10

最新评论