Go有很多种表示数值的类型。通常来说,我们将数值分成两类:整数和浮点数。
整数
整数——跟数学意义上的整数一样——没有小数部分(...,-3,-2,-1,-,1,2,3,...)。但不像我们用10进制表示整数,计算机用2进制表示。
我们十进制系统又10种数字位组成。当一个位上的10种数字位都表示完了,我们在下一位上用更大的数字进位。比方说9后面是10,99后面是100。计算机的做法也一样,但它们没有10个数字位,只有2个。所以计算机的计数会像这样:0、1、10、11、100、101、110、111,如此类推。另一个不同之处是,计算机里所有的整数都有一个明确的尺寸。它们只为确定位数的数据分配空间。所以4位的整数看起来会像:0000、0001、0010、0011、0100。当空间不够用的时候,计数将循环,从头计算(会发生很些很奇怪的行为)。
Go的整数类型有:uint8、uint16、uint32、uint64、int8、int16、int32和int64。8、16、32、64告诉我们每种类型的位数。uint的意思是“无符号整数”,而int是“有符号整数”。无符号整数只包含零和正整数。除此还有两种类型的别名:byte跟unit8是一样的,rune跟int32是一样的。字节(byte)是计算机中极普遍的衡量单位(1 byte = 8 bits,1024 bytes = 1 kilobyte,1024 kilobytes = 1 megabyte,...),因此Go中的byte会在定义其他类型中经常被使用到。还有三种依赖于计算机的整数类型:uint、int和uintptr。它们之所以依赖于机器,是因为它们的长度取决于计算机的架构。
总体来说,如果你要用整数,你就用int好了。
浮点数
浮点数是拥有小数部分(实数)的数(1.234、123.4、0.00001234、12340000)。它们在计算机里的准确表达是很复杂的,这里我们不必知道怎么去运用它们。现在,我们只需要记着:
浮点数并不精确。有时候并不能准确表达一个数。比方说计算1.01-0.99,答案是0.020000000000000018——一个跟我们预期的值无限接近,但不相等的值。
除此之外,还有些其他值可以被表示:“不是一个数”(NaN,比方说0/0)和正负无穷(+∞和-∞)。
Go有两种浮点类型:float32和float64(经常被叫做单精度和双精度)和两种复数(有虚数部分):complex64和complex128。通常来说我们使用float64。
例子
让我们写一个使用数值类型的例子。首先创建一个叫chapter3的文件夹并创建一个含有以下代码的main.go文件:
package main
import "fmt"
func main() {
fmt.Println("1 + 1 =", 1 + 1)
}
如果你运行代码,你会看到:
$ go run main.go
1 + 1 = 2
这个程序跟我们第二章所写的程序很相似。它们拥有相同的包声明行,相同的包导入行,相同的函数声明,并同样使用了Println函数。只是这次我们不打印Hello World,我们打印1+1=,后面跟着1+1的结果。这个表达式由三部分组成:数值字面量1(属于int类型),+运算符(代表着加)和另一个数值字面量1。让我们用同样的方式试试浮点数:
如果你运行代码,你会看到:
fmt.Println("1 + 1 =", 1.0 + 1.0)
我们用.0来告诉Go这是一个浮点数。运行这个程序将得到一样的结果。
Go有以下的数学运算符:
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 余法 |
原文地址:http://www.zingscript.com/translate/golang-book
来源:oschina
链接:https://my.oschina.net/u/1441707/blog/194543