变量与数据类型

变量声明

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
intint8 ~ int64 有符号整数 42
uintuint8 ~ uint64 无符号整数 100
float32float64 浮点数 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}

实践建议

  1. 优先使用简短声明 :=
  2. 使用 _ 忽略不需要的返回值
  3. 尽量使用 const 定义魔法数字
  4. 切片是动态的,多数时候优于数组