跳到主要内容

自定义类型

类型定义

概念

  • type definition: 基于已有类型定义新类型;
  • 新类型: 与底层类型不是同一类型;
  • 底层类型: 决定新类型的存储和基础操作;

语法格式

// UserID 是新定义的类型, int64 是它的底层类型
type UserID int64

func main() {
// 100 是无类型整数常量, 可赋值给 UserID
var id UserID = 100
// UserID 的底层类型是 int64, 所以支持整数类型的基础运算
println(id + 1) // 输出 101

var n int64 = 200
// id = n // 报错, UserID 与 int64 不是同一类型
id = UserID(n) // 可以, 显式转换 int64 为 UserID

println(id) // 输出 200
}

类型别名

概念

  • type alias: 为已有类型创建别名;
  • 使用场景: 迁移 API、提供语义化名字;
  • 不会引入新类型, 仅为已有类型提供别名;

语法格式

type Byte = uint8 // Byte 与 uint8 完全相同