【Go】结构体的内存布局

测试环境:go1.25.3 windows/amd64 1. 结构体布局 Go 语言中,结构体和它所包含的数据在内存中是以连续块的形式存在的,即使结构体中嵌套有其他的结构体。 2. 示例 2.1. 结构体 定义的结构体如下: 1 2 3 4 5 6 type studentInfo struct { id int // 学号 name string // 姓名 sorce float32 // 总分 rank int // 年纪排名 } 2.2. 示意图 1 2 3 4 5 6 7 8 9 10 Bytes 8 16 4 4 8 +----+------+--------+---------+------+ | id | name | source | padding | rank | +----+------+--------+---------+------+ / \ / \ +-----+--------+ | ptr | length | +-----+--------+ 8 8 由于结构体是 8 字节对齐,所以 source 有 4 字节填充,那么总共是 40 字节。 ...

November 9, 2025 · 3 min · 489 words

【Go】命名规范

一些关键的命名规范。 一、包 对于包的命名,建议是以小写形式的单个单词命名。 在 Go 里面,包的名称不要求是唯一的。 包的名称尽量和包的导入路径里面的最后一个路径一致。 每个包的导入路径是唯一的。 比如 Go 的 Web 框架 Gin,包的名称是 gin,导入路径是: 1 import "github.com/gin-gonic/gin" 对于包的导出标识符的命令,在名字中不要再包含包的名称。 假如有个名为 github.com/zeepunt/lora 的包,对于包的导出标识符: 1 2 3 4 5 6 7 import "github.com/zeepunt/lora" // 推荐 lora.Sx126xOpen() // 不推荐, 因为 LoraSx126xOpen 携带了包的名称 lora.LoraSx126xOpen() 二、标识符 标识符的命名采用驼峰命名法(CamelCase)。 标识符可以指的是变量名称、函数名称、接口名称等。 小驼峰拼写法(lowerCamelCase) 第一个单词的首字母小写,后面每个单词的首字母大写。 大驼峰拼写法(UpperCamelCas) 又称为帕斯卡拼写法(PascalCase)。 每个单词的首字母都需大写。 注意 Go 里面默认大驼峰拼写法的标识符用于包导出标识符。 比如,在 lora 包里面有两个函数,分别是 Sx126xOpen 和 sx1262Info,那么只有 Sx126xOpen 函数可以被外部访问,sx1262Info 只能被包的内部访问。 如果缩略词的首字母是大写的,那么其他的字母也要大写。 比如,HTTP 不要写成 Http。 ...

November 2, 2025 · 1 min · 175 words