序Golang 中的结构或 struct 是用户定义的类型,允许将可能不同类型的项分组/组合为单一类型。可以说是一个不支持继承但支持组合的轻量级类。我们使用 Golang 编写代码的时候,你肯定使用过struct。但是,你可能不知道的是,通过简单地重新排序结构中的字段,可以极大地提高 Go 程序的速度和内存使用率!示例演示type EmployeeStruct struct { IsPublic bool Age int64 Status bool Name string Image float32 }我们来看一下Employee结构体的内存大小:IsPublic(boolean) 1 字节Age(int64) 8 字节Status(boolean) 1 字节Name(string) 16 字节Image(float32) 4 字节总计: 30 字节通过unsafe.Sizeof检查一下:package main import ( "fmt" "unsafe"
介绍在平时做项目得时候,经常会看到很多包里面定义了结构体。e.g. 在context包里面Context接口中的Done()方法,Done()返回一个是以空结构体定义数据的通道chan struct{},那这里他是有什么特殊用意吗?我们接下来分析struct{}的作用。struct{} 空结构是没有字段的结构类型。下面看示例:type Demo struct{} var demo struct{}上面定义了一个Demo的结构体,var 声明变量demo结构体。width在介绍空结构前,先来讨论一下这个width。这里说的这个“width”来自于 gc 编译器,它描述类型实例占用的存储字节数(一个字节=8位)。width是类型的一个属性。由于 Go 程序中的每个值都有一个类型,因此该值的width由其类型定义,并且始终是 8 位的倍数。我们可以使用unsafe.Sizeof()函数获取任何值的width:var num int var str string fmt.Println(unsafe.Sizeof(num)) // output: 8 fmt.Println(unsafe.S
青丝南开
文字、摄影、骑行爱好者