Go 语言拓展以有类型

在开发中,仅仅使用 Go 语言自带的变量是无法满足我们的业务需求的,就算勉强能满足,对我们整个项目代码后期的维护和其可读性,都会带来很大的不便。所以几乎所有语言都支持自定义数据类型,用于拓展已有的数据类型来适应日新月异的开发场景。在 Go 语言中可以使用 type 关键字自定义数据类型。

 

1. 自定义复杂类型

我们可以使用type Name Type去自定义一个全新的数据类型。这个类型的变量就使用Name来声明。通常type用于将一个复杂的数据类型定义为一个全新的数据类型,便于后续使用。

代码示例

代码块
  • package main
  • 2
  • import (
  • 4          "fmt"
  • 5          "reflect"
  • )
  • 7
  • 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关键字还有一种用法,就是以已经存在的数据类型进行类型自定义,这种用法就叫做别名。顾名思义,就是给已经存在的数据类型起一个新名字。常用于使用常量来开发枚举功能时,也是前文在介绍使用常量代替枚举时的使用方式。

代码示例

代码块
  • package main
  • 2
  • import (
  • 4          "fmt"
  • )
  • 6
  • type Grade int
  • 8
  • 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 语言中原先不存在的数据类型

文章来源于网络,侵删!

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!