获得徽章 0
- #青训营 x 字节后端训练营# 每日一复习:Chan的概念
在Go语言中,通道是goroutine与另一个goroutine通信的媒介,并且这种通信是无锁的。换句话说,通道是一种允许一个goroutine将数据发送到另一个goroutine的技术。默认情况下,通道是双向的,这意味着goroutine可以通过同一通道发送或接收数据
在Go语言中,除了chan string这样的写法能够使用读写功能双向管道外,还可以创建出单向管道,如<-chan string只能从管道中读取数据,而chan<- string只能够向管道中写入数据。
作者:CV大使
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞 - #青训营 x 字节后端训练营# 每日一复习:
空结构是没有任何字段的结构类型,例如:
type Q struct{}
var q struct{}
空结构的占用空间大小为零字节,由于空结构占用零字节,因此不需要填充对齐,所以由嵌套空结构的空结构也不会占用存储空间。
go复制代码type Q struct {
A struct{}
B struct{
C struct{}
}
}
var q Q
fmt.Println(unsafe.Sizeof(q)) // 0
由于空结构不占用内存空间,所以我们声明以空结构作为元素的数组或切片,也是不占用空间的。
两个比较实用的实践用途:
1. 使用 chan struct{} 代替 chan bool 在 goroutines 之间传递信号。使用 bool 容易让人不理解该值,true or false,但是使用 chan struct{} 就很清楚,我们不在乎值,只关心发生的事儿,更容易表达清楚一些。
2. 为了防止 unkeyed 初始化结构,可以添加 _ struct {} 字段:
go复制代码type Q struct {
X, Y int
_ struct{}
这样一来,使用 Q{X: 1, Y: 1} 可以,但使用 Q{1, 1} 就会出现编译错误:too few values in struct initializer,同时这样也帮助了 go ver 代码检查。
作者:feileo
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞 - #青训营 x 字节后端训练营# 每日一复习:
nil 是 Golang 中预先声明的标识符(非关键字保留字),其主要用来表示引用类型的零值(指针,接口,函数,映射,切片和通道),表示它们未初始化的值。
nil 是 Golang 中唯一没有默认类型的非类型化的值,它不是一个未定义的状态。所以你不能像这样使用它:
a := nil
// cannot declare variable as untyped nil: a
将一个并没有类型 nil 的值赋给 a 是不对的,编译器不知道它该给 a 分配什么类型。
作者:feileo
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞 - #青训营 x 字节后端训练营# 今日复习:零值
零值是指当你声明变量(分配内存)并未显式初始化时,始终为你的变量自动设置一个默认初始值的策略。
对于值类型:布尔类型为 false, 数值类型为 0,字符串为 "",数组和结构会递归初始化其元素或字段,即其初始值取决于元素或字段。
对于引用类型: 均为 nil,包括指针 pointer,函数 function,接口 interface,切片 slice,管道 channel,映射 map。
作者:feileo
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞 - #新人报道# 一起来学呀
Less can be more 大道至简,小而蕴真,让事情变得复杂很容易,让事情变得简单才难,深刻的工程文化。
Go 语言(或 Golang)是 Google 2009 年首次开源,并在 2012 年正式发布 Go 稳定版的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去10多年间软件开发的难度令人沮丧。Google 对 Go 寄予厚望,其设计是让软件充分发挥 多核心处理器同步多工 的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助开发者处理琐碎但重要的内存管理问题。Go 的速度也非常快,几乎和 C 或 C++ 程序一样快,且能够快速开发应用程序。
Go(又称 Golang)一种 静态强类型、编译型 语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
————————————————
版权声明:本文为CSDN博主「想变厉害的大白菜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:blog.csdn.net
展开评论点赞