变量与数据类型
变量声明
Go 语言有多种变量声明方式:
// 完整声明
var name string = "Go"
// 类型推断
var version = 1.22
// 简短声明(函数内使用)
count := 100
多变量声明
var x, y int = 1, 2
var a, b = "hello", true
c, d := 3.14, "world"
基本数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
bool |
布尔类型 | true / false |
int、int8 ~ int64 |
有符号整数 | 42 |
uint、uint8 ~ uint64 |
无符号整数 | 100 |
float32、float64 |
浮点数 | 3.14 |
string |
字符串 | "Go语言" |
byte |
字节(uint8 别名) | 'A' |
rune |
字符(int32 别名) | '中' |
零值
Go 的变量声明后如果没有赋值,会有默认零值:
var i int // 0
var f float64 // 0
var s string // ""
var b bool // false
var p *int // nil
常量
const Pi = 3.14159
const (
StatusOK = 200
StatusNotFound = 404
)
类型转换
Go 要求显式类型转换:
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
// 字符串与整数转换
str := strconv.Itoa(42) // int -> string
num, _ := strconv.Atoi("42") // string -> int
复合类型
数组
var arr [5]int
arr[0] = 1
nums := [3]int{1, 2, 3}
切片(动态数组)
slice := []int{1, 2, 3}
slice = append(slice, 4)
sub := slice[1:3]
Map
m := make(map[string]int)
m["age"] = 30
value, exists := m["age"]
结构体
type User struct {
Name string
Age int
}
u := User{Name: "Alice", Age: 30}
实践建议
- 优先使用简短声明
:= - 使用
_忽略不需要的返回值 - 尽量使用
const定义魔法数字 - 切片是动态的,多数时候优于数组
