¿Cuál es la diferencia entre los operadores := y = en Go? Explica con ejemplos
¡Hola! Acabo de empezar a aprender Go y no puedo entender la diferencia entre := y =. Ambos operadores parecen asignar algo, pero el compilador se queja si los confundo.
Aquí hay un ejemplo de código que no me funciona:
```go
package main
import "fmt"
func main() {
var name string
name = "Alice"
fmt.Println(name)
// Y esto por alguna razón no se compila:
var age int
age := 25 // error: no new variables on left side of :=
fmt.Println(age)
}
```
Leí la documentación, pero está escrita de manera complicada. Explícame en palabras simples: ¿cuándo usar := y cuándo =? ¿Y por qué en un caso puedo escribir `x := 10` y en otro `var x int = 10`?
También me confunde que en algunos ejemplos veo que usan := dentro de funciones, pero no a nivel de package. ¿Es una limitación del lenguaje?
Agradecería una explicación detallada con ejemplos de cuándo aplicar cada operador.