Go语言基础学习四-布尔与数值类型
前面两篇boke老汉是利用代码分析的方式来从大致总体及实际的角度来认识go语言的特性,今天从这一篇开始及以后则是根据go语言的基础部分分章节进行针对性的学习,这一篇我们讲解的内容是go语言最基础的部分,注释,go语言的关键字和操作符,及合法标识符构成等,一旦这些基础性的东西讲解完将会讲解布尔类型,整形及浮点型。这些东西虽然简单,但是却是我们go语言表达最基础的部分,在老汉觉得,无论任何语言都是在基础表达熟练的情况下,加上自己的逻辑思维(算法)才能做到出口成章,条理清晰,代码才能通俗易懂,结构紧凑~废话不多说,马上进入基础部分的学习吧!
注释:go语言支持两种类型的注释,从C++借鉴而来,行注释以//开头,块注释以/*开头*/结尾表示
标识符:首字符必须是字母,不能与关键字同名,字母可以是下划线或Unicode中的任何字符,且标识符区分大小写,如little与Little就是两个不同的标识符,且以大写字母开头的标识符是公开的可以导出的,其它的标识符都是私有的,(除了包名约定为全小写)
空标识符”_”是一个占位符,将某个值赋值给空标识符达到丢弃该值的目的,某个函数的返回值中忽略某些值是很常见的。
关键字(25个):
预定义的标识符(36个):
常量和变量:
常量:使用关键字const声明
变量:使用var声明,也可以使用快捷变量声明语法(i := 1.5),go语言会自动推断出所声明变量的类型(var i = false),如果需要也可以显示声明变量(var i type),一般而言,对于整形字面量,go推断为int,对于浮点字面量,go推断为float64,对于复数字面量,go推断为complex128。通常我们不去显式地声明其类型。go语言会将数值变量默认为0,将字符串默认为空,防止未初始化。
枚举类型:当需要设置多个常量的时候,我们不必重复使用const关键字,只需要使用const关键字一次即可。
const Cyan=0 const Magenta=1 const Yellow=2 等价于 const {Cyan=0 , Magenta=1, Yellow=2 }
如果第一个常量的值没有被显式设置(设为一个值或者是iota),则它的值为0,第二个及随后的常量值设为前面一个常量的值。或前面的值设为iota,后续值也为iota,后续的每一个iota都比前面的iota大1,如const {Cyan=iota //0 , Magenta //1, Yellow //2},iota预定义的标识符表示连续的无类型整数常量,每次关键字出现时,它的值会设为0。也可以将iota与浮点数,表达式以及自定义类型一起使用。
type BitFlag int
const{
Active BitFlag =1<<iota //1<<0 == 1
Send //隐式地设置为BitFlag = 1<<iota == 2
Receive //隐式地设置为BitFlag = 1<<iota == 4
}
flag := Active | Send //按位或操作,flag==001|010 == 011 ==3
布尔值和布尔表达式(内置布尔值true false)
二元逻辑操作符(||和&&)采用短路逻辑,这意味着如果我们表达式为b1||b2如果b1为true则不考虑b2,同理b1||b2中b1为false则不考虑b2
无类型的数值常量可以与任何类型的数值兼容。,为了在不同数值类型之间进行运算或比较,则需要采用type(value)的形式,如i:=int(j)
go语言的整数类型:
rune 类型是 Unicode 字符类型,和 int32 类型等价,通常用于表示一个 Unicode 码点。rune 和 int32 可以互换使用。
byte 是uint8类型的等价类型,byte类型一般用于强调数值是一个原始的数据而不是 一个小的整数。
uintptr 是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。 uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
不管它们的具体大小,int、uint和uintptr是不同类型的兄弟类型。其中int和int32也是 不同的类型, 即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式 的类型转换操作,反之亦然。
有符号整数采用 2 的补码形式表示,也就是最高 bit 位用作表示符号位,一个 n bit 的有 符号数的值域是从 -2^{n-1} 到 2^{n-1}-1。例如,int8类型整数的值域是从-128 到 127, 而uint8类型整数的值域是从0到255。
go语言标准库提供了两个无限精度的整数类型:用于整数的big.Int以及用于有理数的big.Rat(包括可以表示成分数的数字2/3)
浮点类型:float32,float64,complex64(实部和虚部都是float32位),complex128(实部和虚部都是float64)
math包中有很多函数学用途的函数工具。