go入门——变量

0 阅读2分钟

变量声明与初始化

1. 标准声明

var 变量名 类型 = 值

显式声明类型,支持零值初始化(未赋值时自动赋予零值)

  • 示例:
var a int       // 零值为0
var b string    // 零值为空字符串
var c bool      // 零值为false

2. 类型推导

var 变量名 = 值

编译器根据右侧值自动推断类型

  • 示例:
var name = "Alice"   // 推断为string
var age = 30         // 推断为int

3. 简短声明( :=

变量名 := 值

只能在函数内部使用,等同于声明+赋值

  • 示例:
x := 3.14        // 自动推断为float64 可以理解为 : var x = 3.14 
isActive := true  // 自动推断为bool

4. 多变量声明


var a, b, c = 1, "hello", true  // 类型混合
x, y := 10, 20                  // 简短声明

支持批量声明,类型可不同

变量的作用域

Go中的变量作用域分为包级和函数级:

  • 包级变量:声明在函数外,作用域为整个包。
  • 函数级变量:声明在函数内,作用域仅限于该函数。
    此外,Go还支持块级作用域,如在ifforswitch语句块内的变量仅在块内有效。
    示例:
package main
var globalVar int = 100 // 包级变量
func main() {
    var localVar int = 200 // 函数级变量
    if true {
        var blockVar int = 300 // 块级变量
        fmt.Println(blockVar)
    }
    fmt.Println(localVar)
    fmt.Println(globalVar)
}

数据类型

各个类型对应的零值

类型说明零值
int整型(32/64位系统自适应)0
float64双精度浮点0.0
bool布尔值false
stringUTF-8字符串""
byteuint8别名0
runeint32别名(Unicode码点)0

Go的基本数据类型

Go提供多种内置类型:

  • Booleanbool,值为truefalse
  • Integersint8, int16, int32, int64,以及uint对应无符号类型。
  • Floating-pointfloat32, float64
  • Complex numberscomplex64, complex128
  • Stringstring,不可变,UTF-8编码。
  • Runerune,即int32,代表一个Unicode码点。
    示例:
var a bool = true
var b int = 100
var c float64 = 3.14
var d string = "Hello"
var e rune = 'A'