Avatar ·

Go中:=与=的区别:短声明与赋值

大家好!我刚开始学习Go,对:=和=运算符感到困惑。它们似乎都用于变量操作,但区别是什么? 下面这个例子让我困惑: ```go package main import "fmt" func main() { name := "安娜" // 这可以工作 var age int = 25 // 这也可以工作 age = 30 // 这也可以工作 // name = "鲍里斯" // 我也试过这个 } ``` 当我写name := "安娜"时——一切正常。但如果我先通过var声明一个变量,然后尝试对同一个变量使用:=,编译器会报错:"no new variables on left side of :="。为什么? 我还注意到:=只在函数内部有效。如果我这样写: ```go var version = "1.0" // 全局——正常 // version := "1.0" // 全局——错误! ``` 为什么会这样?在什么情况下应该使用:=,什么情况下使用=?我读了几篇教程,但还是混淆。请用通俗易懂的方式解释,并举例说明何时使用哪种方式。