内容简介:和大多数强类型语言一样,Go 也有自己基本的类型系统。Go 语言的类型大致可以分为四大类:基础类型(basic types)包括Go 数值类型包括整型,浮点数和复数。对于整型
和大多数强类型语言一样,Go 也有自己基本的类型系统。Go 语言的类型大致可以分为四大类:
- basic types
- aggregate types
- reference types
- interface types
基础类型(basic types)包括 numbers
, strings
, booleans
。 聚合类型(aggregate types)包括 arrays
, structs
。引用类型(reference types) 包括不同组,包括 pointers
, slices
, maps
, functions
, channels
,他们都是程序变量或者状态的引用。接口类型 (interface types) 是特殊的一个类型,会在后面单独介绍。
Integers
Go 数值类型包括整型,浮点数和复数。对于整型
rune byte uintptr
注意 int
和 int32
不是同一类型。
书中这边还介绍了运算符优先级和类型转换,进制转换的具体问题,详情可以参考。
Floating-Point 浮点类型
Go 提供了两种精度的浮点数 float32
和 float64
,常量 math.MaxFloat32
表示 float32 能表示的最大数, math.MaxFloat64
同理。
float32 类型的浮点数可以提供大约 6 个十进制数的精度,而 float64 则可以提供约 15 个十进制数的精度;通常应该优先使用 float64 类型。
Complex Numbers 复数
Go 语言提供了两种精度的复数类型:complex64 和 complex128,分别对应 float32 和 float64 两种浮点数精度。内置的 complex 函数用于构建复数, real
和 imag
函数用来返回实部和虚部:
var x complex128 = complex(1, 2) // 1+2i var y complex128 = complex(3, 4) // 3+4i fmt.Println(x*y) // "(-5+10i)" fmt.Println(real(x*y)) // "-5" fmt.Println(imag(x*y)) // "10"
Booleans
布尔值只有两个值 true or false
Strings
字符串是不可变的字节序列,可以包含任何数据,通常文本会解释为 UTF8 编码 Unicode 。len 函数返回的是字节数目。
标准库中有四个包对字符串处理尤为重要:bytes、strings、strconv 和 unicode 包。strings 包提供了许多如字符串的查询、替换、比较、截断、拆分和合并等功能。
bytes 包也提供了很多类似功能的函数,但是针对和字符串有着相同结构的 []byte 类型。因为字符串是只读的,因此逐步构建字符串会导致很多分配和复制。在这种情况下,使用 bytes.Buffer 类型将会更有效,稍后我们将展示。
strconv 包提供了布尔型、整型数、浮点数和对应字符串的相互转换,还提供了双引号转义相关的转换。
unicode 包提供了 IsDigit、IsLetter、IsUpper 和 IsLower 等类似功能,它们用于给字符分类。每个函数有一个单一的 rune 类型的参数,然后返回一个布尔值。而像 ToUpper 和 ToLower 之类的转换函数将用于 rune 字符的大小写转换。所有的这些函数都是遵循 Unicode 标准定义的字母、数字等分类规范。strings 包也有类似的函数,它们是 ToUpper 和 ToLower,将原始字符串的每个字符都做相应的转换,然后返回新的字符串。
Constants
常量表达式在编译器计算,每种常量的潜在类型都是基础类型。
常量声明语句定义了常量的名字,常量值不能修改。
const pi = 3.1415
或者
const ( e = 2.71 pi = 3.14 )
iota 常量生成器
常量声明可以使用 iota 常量生成器初始化,用于生成一组相似规则初始化的常量,const 语句中,第一个声明常量所在行,iota 会被置为 0,然后每行加一。
type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
以上所述就是小编给大家介绍的《Go 语言学习笔记 3:基础类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- GO语言学习笔记(四)GO语言控制语句
- GO语言学习笔记(一)Go语言的初步了解
- GO语言学习笔记(五)GO语言函数的简易计算
- 【Go语言学习】Linux下Go语言的安装与设置
- Go语言学习笔记02--go语言运算符与流程控制分支语句
- go语言学习
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。