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" // 全局——错误!
```
为什么会这样?在什么情况下应该使用:=,什么情况下使用=?我读了几篇教程,但还是混淆。请用通俗易懂的方式解释,并举例说明何时使用哪种方式。