go结构体内存对齐
go 结构体内存对齐 结构体是占用一块连续的内存,一个结构体变量的大小是由结构体中的字段决定的 " 内存对齐" 如下代码的内存大小 结构体内存是连续的,肯定是一次把它都读完,每个结构体的大小都是不固定的,结构体的内存大小又不完全由结构体的字段决定的。 为了保证 CPU 读取的是一整块的,处理的时候会按照规则对齐,比如这里第一个字段占 1 个字节,下个字段占

wxvirus2022年6月4日
大约 4 分钟
go结构体与接口

类型别名和自定义类型

自定义类型

在 Go 语言中有一些基本的数据类型,如stringint、浮点型、布尔等数据类型,Go 语言中可以使用type关键字来定义自定义类型。

自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义

// 将MyInt定义为int类型
type MyInt int

通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性

var x MyInt = 100
fmt.Printf("x=%T\n", x) // x:main.MyInt

自定义类型是程序员根据自己的需要创造的新类型

类型别名

type NewInt = int

这个实际上本质还是原来的int无非就是起了一个小名,别名。比如类型rune其实就是int32,还有byte就是uint8类型。

实际上就是为了方便理解而存在。

var x NewInt = 100
fmt.Printf("x=%T\n", x) // x:int

类型别名只在源文件中生效,编译完之后,还是会以被替换成原始的int类型


wxvirus2022年5月24日
大约 13 分钟