Diferencia entre := y = en Go: declaración corta vs asignación
¡Hola a todos! Acabo de empezar a aprender Go y estoy confundido con los operadores := y =. Parece que ambos se usan para trabajar con variables, pero ¿cuál es la diferencia?
Aquí hay un ejemplo que me confundió:
```go
package main
import "fmt"
func main() {
name := "Anna" // esto funciona
var age int = 25 // esto también funciona
age = 30 // y esto funciona
// name = "Boris" // esto también lo probé
}
```
Cuando escribo name := "Anna" — todo bien. Pero si primero declaro una variable con var, y luego intento usar := con la misma variable, el compilador se queja: "no new variables on left side of :=". ¿Por qué?
También noté que := solo funciona dentro de funciones. Si escribo así:
```go
var version = "1.0" // globalmente — bien
// version := "1.0" // globalmente — ¡error!
```
¿Por qué es así? ¿Y en qué casos se debe usar :=, y en cuáles simplemente =? He leído varios tutoriales, pero aún así me confundo. Explíquenme, por favor, de manera sencilla, con ejemplos, cuándo usar qué.