02.内建变量类型
在 Go 语言中,内建变量类型、强制类型转换和浮点数操作是非常重要的概念。
内建变量类型
Go 语言有多种内建变量类型,包括基本类型和复合类型。
基本类型
- 布尔型:
bool(值为true或false) - 整型:
- 有符号整型:
int8,int16,int32,int64 - 无符号整型:
uint8(别名byte),uint16,uint32,uint64 - 特殊整型:
int,uint(根据平台不同,可能是 32 位或 64 位),uintptr- 无长度 int 的实际长度取决于操作系统位数(32/64)
uintptr 为指针类型
- 无长度 int 的实际长度取决于操作系统位数(32/64)
- 有符号整型:
- 浮点型:
float32,float64 - 复数型:
complex64,complex128- complex 为复数(1+1i)
- 字符串:
string
-
byte,rune
rune 为 Go 语言的字符型相当于其他语言的 char ,长度为4字节 int32
复合类型
- 数组:
[n]T - 切片:
[]T - 映射:
map[K]V - 结构体:
struct { ... } - 指针:
*T - 通道:
chan T - 函数:
func(...T) T
强制类型转换
golang有严格的类型匹配,不同的类型之间通常需要手动转换(interface类型除外),编译器不会进行自动转换


修改后:

浮点数进度
浮点数有两种表示方式:float32 和 float64,分别表示 32 位和 64 位的浮点数。float64 提供更高的精度。
浮点数运算会丢失精度,解决方法很多,在测试代码中提供了一种,思路为:如果要保留m位小数,对m + 1位加0.5后四舍五入
代码
package main import ( "fmt" "math" "math/cmplx" ) func variableZeroValue() { //赋空值 var a int var s string fmt.Printf("%d %q\n", a, s) } func variableInitialValue() { //初始变量,Go语言非常严格,定义了就要用到 //定义多个变量可赋初值也可不赋 var a, b int = 3, 4 var s string = "abc" fmt.Println(a, b, s) } func variableTypeDeduction() { //推断类型 var a, b, c, d = 3, 4, true, "def" println(a, b, c, d) } func variableShorter() { a, b, c, d := 3, 4, true, "def" b = 7 fmt.Println(a, b, c, d) } var name = "jj" var age = 24 var ( name1 = "aa" age1 = 22 ) func euler() { //验证欧拉公式 fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1) //cmplx.Pow(math.E, 1i*math.Pi) + 1) } func triangle() { var a, b int = 3, 4 var c int c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) } func main() { fmt.Println("Hello World") variableZeroValue() variableInitialValue() variableTypeDeduction() variableShorter() fmt.Println(name, age) fmt.Println(name1, age1) euler() triangle() }

浙公网安备 33010602011771号