Avatar ·

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é.