Go语言类型
- bool,string(布尔,字符串)
- (u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr 加u有符号整数 不加u无符号整数 如果不规定长度 int 还是 int8 还是int32 默认按照操作系统位数 来决定 64位系统就是int64 = 以此类推。 uintptr是指针 长度根据操作系统来定。
- byte,rune byte字节 8位,rune是4个字节相当于java里的char 但是char是一个字节考虑到国际化原因rune竟可能能放下各种编码 32位 Unicode是2个字节 16位 utf-8是三个字节 24位。
- float32,float64,complex64,complex128 浮点数32位和64位,复数 complex64 实部和虚部 分别是 32位 (var a complex64=3 +4i) 128位以此类推。
func euler(){
c:=3 + 4i
println(cmplx.Abs(c) )
}
在Go里面 对 复数取模 是多少?
你猜对了吗 就是5.
下面再来看看欧拉公式
来用Go验证下吧
oulaformula := cmplx.Exp( 1i*math.Pi) + 1
看看在python中怎么计算吧
python中使用cmath来实现。 但在python 虚部变量不是
原来是python为了怕搞错
在循环中常用来计数 所以用了
防止弄错。
可以看到 不管是go 和 python在浮点运算时在精度方面是有误差的 其实所有语言 在浮点运算时都是不准的,但误差是很小的。
fmt.Printf("%.3f",i ) //保留3位
强制类型转换
- 类型转换是强制的
类型转换是强制的 如果是 int = float64 这样的情况 其他语言可能会隐式转换类型 但是go不行 必须是 int = int(float64)