本节我们继续学习Go语言的基本语法,可参考阅读第一节。
浮点类型
Go语言中的浮点类型主要有:
其中复数类型有两个,complex64和complex128,这是和别的语言比比较特殊的地方。两个类型的村粗空间分别需要8个字节和16个字节。实际上,complex64类型的值会由两个float32类型的值分别表示复数的实数部分和虚数部分。而complex128类型的值会由两个float64类型的值分别表示复数的实数部分和虚数部分。
复数类型的值一般由 浮点数 表示的实数部分、加号“+”、浮点数表示的虚数部分,以及小写字母“i”组成。比如,3.7E+1 + 5.98E-2i。正因为复数类型的值由两个浮点数类型值组成,所以其表示法的规则自然需遵从浮点数类型的值表示法的相关规则。
Math包简介
对于数据的操作,go语言提供了完善的类型,自然也有相应的数学函数API,
math包中的常量类型:
Constants //常量类型,
go语言中预定义的常量类型有
const (
E = 2.71828182845904523536028747135266249775724709369995957496696763 // A001113
Pi = 3.14159265358979323846264338327950288419716939937510582097494459 // A000796
Phi = 1.61803398874989484820458683436563811772030917980576286213544862 // A001622
Sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974 // A002193
SqrtE = 1.64872127070012814684865078781416357165377610071014801157507931 // A019774
SqrtPi = 1.77245385090551602729816748334114518279754945612238712821380779 // A002161
SqrtPhi = 1.27201964951406896425242246173749149171560804184009624861664038 // A139339
Ln2 = 0.693147180559945309417232121458176568075500134360255254120680009 // A002162
Log2E = 1 / Ln2
Ln10 = 2.30258509299404568401799145468436420760110148862877297603332790 // A002392
Log 10E = 1 / Ln10
)
math包的常用 函数 主要有:
func Abs(x float64) float64 //取x的绝对值
func Max(x, y float64) float64 //返回x和y中最大值
func Min(x, y float64) float64 //返回x和y中最小值
func Dim(x, y float64) float64 //函数返回x-y和0中的最大值
func Mod(x, y float64) float64 //取余运算,可以理解为 x-Trunc(x/y)*y,结果的正负号和x相同
func Sqrt(x float64) float64 //返回x的二次方根
func Cbrt(x float64) float64 //返回x的三次方根
func Hypot(p, q float64) float64 //返回Sqrt(p*p + q*q)
func Sin(x float64) float64 //求正弦
func Cos(x float64) float64 //求余弦
func Tan(x float64) float64 //求 正切
func Log(x float64) float64 //求自然 对数
func Log1p(x float64) float64 //等价于Log(1+x)。但是在x接近0时,本函数更加精确
func Log2(x float64) float64 //求2为底的对数
func Log10(x float64) float64 //求10为底的对数
func Logb(x float64) float64 //返回x的二进制指数值
func Exp(x float64) float64 //返回E**x;x绝对值很大时可能会溢出为0或者+Inf,x绝对值很小时可能会下溢为1。
func Exp2(x float64) float64 //返回2**x
func Pow(x, y float64) float64 //返回x**y
func Pow10(e int) float64 //返回10**e
func Gamma(x float64) float64 //伽玛函数(当x为正整数时,值为(x-1)!)
math包下还有些子包如下:
math/big
math/cmplx
math/rand
其中比较常用的是rand,rand包实现了 伪随机数 生成器。
里面实现了各种数据类型的随机数生成。
string类型
在Go语言中,原生的string类型代表不可改变的字节数组,即文本。使用长度作定界,而不是以结尾0终止的。
可重新赋值,但不能修改其值。这点有点像java里的String类。
正如”3″总是3,”hello”也总是”hello”。
Go语言对字符串操作提供了良好的支持。这部分这边简单提一下,后面我们找个时间专门讨论一下;毕竟对于上层语言,数据类型转换与字符串处理总是永恒不变的话题。