Go03-基础语法与数据类型

📅 发布时间:2026/7/16 23:01:44
Go03-基础语法与数据类型 第2章基础语法与数据类型2.1 变量声明Go 是静态类型语言变量在声明时必须确定类型。基本声明方式// 方式1完整声明varnamestringvarageintvarisActivebool// 方式2声明并初始化varnamestring张三varageint25varisActivebooltrue// 方式3类型推断推荐varname张三// 自动推断为 stringvarage25// 自动推断为 int短变量声明函数内部funcmain(){// : 只能在函数内部使用name:张三age:25isActive:truefmt.Println(name,age,isActive)}多变量声明// 批量声明var(namestring张三ageint25heightfloat64175.5)// 同类型批量声明varx,y,zint1,2,3常量// 常量声明constPi3.14159constMaxRetries3// 批量常量const(StatusOK200StatusError500)// iota 枚举器const(Sundayiota// 0Monday// 1Tuesday// 2Wednesday// 3Thursday// 4Friday// 5Saturday// 6)// iota 运算const(_iota// 0忽略KB1(10*iota)// 1 10 1024MB// 1 20 1048576GB// 1 30)2.2 基本数据类型整数类型类型位数范围int88位-128 到 127int1616位-32768 到 32767int3232位-2^31 到 2^31-1int6464位-2^63 到 2^63-1int平台相关32位或64位系统uint88位0 到 255uint1616位0 到 65535uint3232位0 到 2^32-1uint6464位0 到 2^64-1uint平台相关32位或64位系统var(aint8127bint1632767cint322147483647dint649223372036854775807eint42fuint8255)浮点数类型var(pricefloat3219.99// 32位浮点数pifloat643.14159// 64位浮点数推荐)// 科学计数法varavogadrofloat646.022e23varsmallfloat641.23e-4布尔类型var(isActivebooltrueisDeletedboolfalse)// 布尔运算result:isActive!isDeleted// trueresultisActive||isDeleted// trueresultisActive!isDeleted// true字符串类型// 基本字符串name:Hello, 世界// 多行字符串反引号原生字符串poem: 春眠不觉晓 处处闻啼鸟。 // 字符串操作fmt.Println(len(name))// 字节数fmt.Println(Hello World)// 拼接fmt.Println(Hello[0])// 获取字节不是字符字符类型var(chbyteA// byte uint8ASCII 字符zhrune中// rune int32Unicode 字符)// rune 类型用于处理 Unicodes:Hello, 世界for_,r:ranges{fmt.Printf(%c ,r)// 输出每个字符}2.3 类型转换Go 不支持隐式类型转换必须显式转换// 数值类型转换variint42varffloat64float64(i)varuuintuint(f)// 字符串与数值转换importstrconv// 字符串转整数n,err:strconv.Atoi(42)iferr!nil{fmt.Println(转换失败:,err)}// 整数转字符串s:strconv.Itoa(42)// 字符串转浮点数f,err:strconv.ParseFloat(3.14,64)// 任意类型转字符串s:fmt.Sprintf(%d,42)2.4 运算符算术运算符a,b:10,3fmt.Println(ab)// 13 加fmt.Println(a-b)// 7 减fmt.Println(a*b)// 30 乘fmt.Println(a/b)// 3 整除fmt.Println(a%b)// 1 取模比较运算符a,b:10,20fmt.Println(ab)// false 等于fmt.Println(a!b)// true 不等于fmt.Println(ab)// false 大于fmt.Println(ab)// true 小于fmt.Println(ab)// false 大于等于fmt.Println(ab)// true 小于等于逻辑运算符a,b:true,falsefmt.Println(ab)// false 与fmt.Println(a||b)// true 或fmt.Println(!a)// false 非位运算符a,b:12,10// 二进制1100, 1010fmt.Println(ab)// 8 按位与 (1000)fmt.Println(a|b)// 14 按位或 (1110)fmt.Println(a^b)// 6 按位异或 (0110)fmt.Println(a2)// 48 左移 (110000)fmt.Println(a2)// 3 右移 (11)2.5 格式化输出fmt 包常用函数name:张三age:25height:175.5// Println - 自动添加空格和换行fmt.Println(name,age,height)// Printf - 格式化输出fmt.Printf(姓名: %s, 年龄: %d, 身高: %.1f\n,name,age,height)// Sprintf - 格式化为字符串s:fmt.Sprintf(姓名: %s, 年龄: %d,name,age)// Fprintf - 写入文件fmt.Fprintf(os.Stdout,输出到标准输出\n)格式化动词动词说明示例%d整数42%f浮点数3.14%s字符串hello%t布尔值true%v默认格式自动选择%v结构体字段名{Name:张三}%#vGo 语法表示main.Person{Name:张三}%T类型string%p指针地址0xc0000b4000%%百分号%// 精度控制fmt.Printf(%.2f\n,3.14159)// 3.14fmt.Printf(%10d\n,42)// 42宽度10右对齐fmt.Printf(%-10d\n,42)// 42 左对齐fmt.Printf(%010d\n,42)// 0000000042零填充2.6 练习声明不同类型的变量并打印其值和类型使用iota定义文件权限常量读、写、执行编写程序将摄氏温度转换为华氏温度使用格式化输出打印一个简单的表格2.7 下一章下一章我们将学习 Go 语言的控制结构。