
在 Go 语言里,给数据起名字(声明变量)主要有三种招式,招招致命。
使用 var 关键字,规规矩矩,适合声明全局变量或者需要显式指定类型的时候。
// 格式:var 变量名 类型 = 值
var name string = "唐伯虎"
var age int = 25
var isHandsome bool = true
如果你懒得写类型,华夫人(编译器)很聪明,能根据右边的值自动推断出来。
var power = 10000 // 编译器:嗯,这是个 int
var salary = 99.5 // 编译器:嗯,这是个 float64
这是 Go 语言最独门的绝技!用 :=,连 var 都省了。注意:此招式只能在函数内部使用!
func main() {
love := "秋香" // 等同于 var love string = "秋香"
// 华夫人警告:在函数外面用 := 是要被打板子的!
}
一次性搞定四个香。
var (
chunxiang = "春香"
xiaxiang = "夏香"
qiuxiang = "秋香"
dongxiang = "冬香"
)
在别的语言里,交换两个变量的值需要找个“中间人”(临时变量)。在 Go 里,一招搞定!
a := 100
b := 200
a, b = b, a // 瞬间交换!a变成200,b变成100
有时候函数返回两个值,你只想要其中一个。另一个怎么办?扔掉!用下划线 _ 表示。

_ 吧!
func getGift() (string, string) {
return "鲜花", "牛粪"
}
flower, _ := getGift() // 我只要鲜花,牛粪丢进垃圾桶(匿名变量)
变量之所以叫变量,因为它的值是可以变的。但要注意,类型一旦确定就不能变了。
package main
import "fmt"
func main() {
name := "9527"
fmt.Println("初始名字:", name)
// 任务1:把 name 改成 "华安"
// name = ______
// 任务2:尝试把 name 改成 12345 (整数),看看会发生什么?
// name = 12345
fmt.Println("现在名字:", name)
}
任务: 思考一下,为什么不能把 name 改成数字?
代码解析:
name = "华安" // 正确,都是 string 类型
如果你尝试 name = 12345,编译器会报错:cannot use 12345 (type int) as type string in assignment。
唐伯虎总结: 变量如人,虽然可以改名换姓(值变),但不能连种族都变了(类型不变)!这就是 Go 语言的静态强类型特性。