Go语言入门(二)---内建变量类型

Go语言类型

  • bool,string(布尔,字符串)
  • (u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr 加u有符号整数 不加u无符号整数 如果不规定长度 int 还是 int8 还是int32 默认按照操作系统位数 来决定 64位系统就是int64 = 2 64 2^{64} 以此类推。 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.
下面再来看看欧拉公式 e i π + 1 = 0 e^{iπ} +1=0 来用Go验证下吧

oulaformula := cmplx.Exp( 1i*math.Pi) + 1

在这里插入图片描述
看看在python中怎么计算吧
在这里插入图片描述
python中使用cmath来实现。 但在python 虚部变量不是 i i 原来是python为了怕搞错 i i 在循环中常用来计数 所以用了 j j 防止弄错。
可以看到 不管是go 和 python在浮点运算时在精度方面是有误差的 其实所有语言 在浮点运算时都是不准的,但误差是很小的。

	fmt.Printf("%.3f",i ) //保留3位 

在这里插入图片描述

强制类型转换

  • 类型转换是强制的
    在这里插入图片描述
    类型转换是强制的 如果是 int = float64 这样的情况 其他语言可能会隐式转换类型 但是go不行 必须是 int = int(float64)
发布了67 篇原创文章 · 获赞 5 · 访问量 3182

猜你喜欢

转载自blog.csdn.net/weixin_41315492/article/details/103072718