语法说明:
- 变量声明后必须使用 - 类型转换必须显式进行 - 不同类型变量不能直接运算 - 变量名区分大小写 - 类型转换可能会损失精度
package main
import "fmt"
func main() {
// 1. 标准声明
var name string = "张三"
var age int = 25
// 2. 类型推断
var salary = 12000.50 // 自动推断为float64
// 3. 简短声明
height := 175.5
isStudent := true
// 4. 多变量声明
var (
city string = "北京"
country string = "中国"
score int = 90
)
// 5. 多变量简短声明
x, y := 100, 200
// 打印变量
fmt.Printf("姓名:%s\n", name)
fmt.Printf("年龄:%d\n", age)
fmt.Printf("薪资:%.2f\n", salary)
fmt.Printf("身高:%.1f\n", height)
fmt.Printf("是否学生:%t\n", isStudent)
fmt.Printf("城市:%s\n", city)
fmt.Printf("国家:%s\n", country)
fmt.Printf("分数:%d\n", score)
fmt.Printf("x=%d, y=%d\n", x, y)
}
示例效果:
示例代码:
package main
import "fmt"
func main() {
// 数值类型
intNum := 42 // 整数
floatNum := 3.14 // 浮点数
// 字符串类型
str := "Hello Go" // 字符串
char := 'A' // 字符(rune)
// 布尔类型
isTrue := true // 布尔值
// 打印数值类型
fmt.Println("数值类型示例:")
fmt.Printf("整数: %v, 类型: %T\n", intNum, intNum)
fmt.Printf("浮点数: %v, 类型: %T\n", floatNum, floatNum)
// 打印字符串类型
fmt.Println("\n字符串类型示例:")
fmt.Printf("字符串: %v, 类型: %T\n", str, str)
fmt.Printf("字符: %v, 类型: %T\n", char, char)
// 打印布尔类型
fmt.Println("\n布尔类型示例:")
fmt.Printf("布尔值: %v, 类型: %T\n", isTrue, isTrue)
// 等待用户输入后退出
fmt.Println("\n按回车键退出...")
fmt.Scanln()
}
示例效果:
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
// 数值类型转换
var a int = 100
var b float64 = float64(a) // int转float64
var c int64 = int64(b) // float64转int64
// 字符串转换
var d string = strconv.Itoa(a) // int转string
var e string = fmt.Sprintf("%f", b) // float转string
// 字符串转数值
f, _ := strconv.Atoi(d) // string转int
g, _ := strconv.ParseFloat(e, 64) // string转float64
// 打印结果
fmt.Printf("整数:%d\n", a)
fmt.Printf("转换为float64:%f\n", b)
fmt.Printf("转换为int64:%d\n", c)
fmt.Printf("转换为string:%s\n", d)
fmt.Printf("float转string:%s\n", e)
fmt.Printf("string转int:%d\n", f)
fmt.Printf("string转float64:%f\n", g)
// 类型和长度
fmt.Printf("\n类型和长度:\n")
fmt.Printf("a的类型:%T\n", a)
fmt.Printf("b的类型:%T\n", b)
fmt.Printf("d的类型:%T\n", d)
fmt.Printf("d的长度:%d\n", len(d))
}
示例效果:
- 尝试不同的变量声明方式 - 实践各种类型转换 - 观察精度损失情况 - 处理类型转换错误 - 使用fmt不同的格式化输出
数据类型分类 | 英文对照 | 类型名称 | 取值区间 | 说明 |
---|---|---|---|---|
整数类型 | Integer | int8 | -128 到 127 | 有符号 8 位整数 |
int16 | -32768 到 32767 | 有符号 16 位整数 | ||
int32 | -2147483648 到 2147483647 | 有符号 32 位整数 | ||
int64 | -9223372036854775808 到 9223372036854775807 | 有符号 64 位整数 | ||
uint8 | 0 到 255 | 无符号 8 位整数,也称为 byte 类型 | ||
uint16 | 0 到 65535 | 无符号 16 位整数 | ||
uint32 | 0 到 4294967295 | 无符号 32 位整数 | ||
uint64 | 0 到 18446744073709551615 | 无符号 64 位整数 | ||
int | 取决于系统,32 位系统为 -2147483648 到 2147483647,64 位系统为 -9223372036854775808 到 9223372036854775807 | 有符号整数,通常用于大多数整数运算 | ||
uint | 取决于系统,32 位系统为 0 到 4294967295,64 位系统为 0 到 18446744073709551615 | 无符号整数 | ||
uintptr | 足够存储指针的无符号整数 | 用于存储指针地址 | ||
浮点数类型 | Floating-point | float32 | 约 ±1.18e-38 到 ±3.40e+38 | 32 位浮点数 |
float64 | 约 ±2.23e-308 到 ±1.80e+308 | 64 位浮点数,通常用于大多数浮点数运算 | ||
布尔类型 | Boolean | bool | true 或 false | 表示逻辑值 |
字符串类型 | String | string | 由 UTF-8 编码的字节序列组成,长度不限 | 用于存储文本数据 |