内容简介:和大多数强类型语言一样,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语言学习
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Reversing
艾拉姆(Eilam,E.) / 韩琪、杨艳、王玉英、李娜 / 电子工业出版社 / 2007-9 / 79.00元
本书描述的是在逆向与反逆向之间展开的一场旷日持久的拉锯战。作者Eldad Eilam以一个解说人的身份为我们详尽地评述了双方使用的每一招每一式的优点与不足。 书中包含的主要内容有:操作系统的逆向工程;.NET平台上的逆向工程;逆向未公开的文件格式和网络协议;逆向工程的合法性问题;拷贝保护和数字版权管理技术的逆向工程;防止别人对你的代码实施逆向工程的各种技术;恶意程序的逆向工程;反编译器的基本......一起来看看 《Reversing》 这本书的介绍吧!