go语言开发基础25 - 之go语言里使用type关键字自定义类型与类型别名使用
在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。
一、自定义类型与类型别名定义
1.1、自定义类型定义与使用
自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如:
- 自定义类型的语法
type MyInt int // 通过Type关键字的定义,MyInt就是一种新的类型,它具有int的特性。
- 自定义类型使用
package main
import "fmt"
func main() {
type myInt int // 通过Type关键字的定义自定义类型,MyInt就是一种新的类型,它具有int的特性。
var a myInt = 20 // 定义myInt类型的变量
var b int = 10 // 定义int类型的变量
c := a + myInt(b) // myInt和int是不同的类型,如果需要做运算需要先转换为同一种类型
fmt.Println("c is:",c) // 结果为:c is: 30
}
1.2、类型别名定义
类型别名是Go1.9版本添加的新功能。
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人。
- 类型别名定义语法
type TypeAlias = Type
- 类型别名的使用
package main
import "fmt"
func main() {
type myInt = int // 定义int类型的别名为myInt
var a myInt = 20 // 定义myInt类型的变量
var b int = 10 // 定义int类型的变量
c := a + b // myInt是int类型的别名,a和b变量可以直接做运算操作
fmt.Println("c is:",c) // 结果为:c is: 30
}
二、自定义类型与类型别名的区别
//类型定义
type NewInt int
//类型别名
type MyInt = int
func main() {
var a NewInt
var b MyInt
fmt.Printf("type of a:%T\n", a) // 结果为:type of a:main.NewInt
fmt.Printf("type of b:%T\n", b) // 结果为:type of b:int
}
结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型。b的类型是int。MyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。

浙公网安备 33010602011771号