Go 语言拓展以有类型
在开发中,仅仅使用 Go 语言自带的变量是无法满足我们的业务需求的,就算勉强能满足,对我们整个项目代码后期的维护和其可读性,都会带来很大的不便。所以几乎所有语言都支持自定义数据类型,用于拓展已有的数据类型来适应日新月异的开发场景。在 Go 语言中可以使用 type 关键字自定义数据类型。
1. 自定义复杂类型
我们可以使用type Name Type
去自定义一个全新的数据类型。这个类型的变量就使用Name
来声明。通常type用于将一个复杂的数据类型定义为一个全新的数据类型,便于后续使用。
代码示例
代码块
- 1
package main
- 2
- 3
import (
- 4
"fmt"
- 5
"reflect"
- 6
)
- 7
- 8
type stringList []string
- 9
- 10
func main() {
- 11
strList := stringList{"test1", "test2"}
- 12
fmt.Println("strList的数据类型:", reflect.TypeOf(strList))
- 13
fmt.Println("strList的值:", reflect.ValueOf(strList))
- 14
}
- 第 8 行:自定义一个数据类型,这个数据类型为字符串切片,命名为 stringList;
- 第 11 行:给变量 strList 定义为 stringList 类型并赋值;
- 第 12 行:打印 strList 的数据类型;
- 第 13 行:打印 strList 的值。
执行结果:
2. 别名
type关键字还有一种用法,就是以已经存在的数据类型进行类型自定义,这种用法就叫做别名。顾名思义,就是给已经存在的数据类型起一个新名字。常用于使用常量来开发枚举功能时,也是前文在介绍使用常量代替枚举时的使用方式。
代码示例
代码块
- 1
package main
- 2
- 3
import (
- 4
"fmt"
- 5
)
- 6
- 7
type Grade int
- 8
- 9
const (
- 10
FirstGrade Grade = iota
- 11
SecondGrade
- 12
ThirdGrade
- 13
FourthGrade
- 14
FifthGrade
- 15
SixthGrade
- 16
)
- 17
- 18
func main() {
- 19
fmt.Println("FirstGrade :", FirstGrade)
- 20
fmt.Println("SecondGrade:", SecondGrade)
- 21
fmt.Println("ThirdGrade :", ThirdGrade)
- 22
fmt.Println("FourthGrade:", FourthGrade)
- 23
fmt.Println("FifthGrade :", FifthGrade)
- 24
fmt.Println("SixthGrade :", SixthGrade)
- 25
}
- 第 7 行:给int类型定义一个名为 Grade 的别名。
执行结果:
3. 小结
本文主要介绍了自定义类型 type 关键字的两个用法:自定义复杂类型和别名。其实这两种用法的特性就是一致的,就是使用 type 关键字,在 Go 语言中定义了一种 Go 语言中原先不存在的数据类型。
文章来源于网络,侵删!