Qual é a diferença entre os operadores := e = em Go? Explique com exemplos
Olá! Acabei de começar a estudar Go e não consigo entender a diferença entre := e =. Ambos os operadores parecem atribuir algo, mas o compilador reclama se eu os confundo.
Aqui está um exemplo de código que não funciona para mim:
```go
package main
import "fmt"
func main() {
var name string
name = "Alice"
fmt.Println(name)
// E isso por algum motivo não compila:
var age int
age := 25 // erro: no new variables on left side of :=
fmt.Println(age)
}
```
Li a documentação, mas está complicada. Explique em palavras simples: quando usar := e quando usar =? E por que em um caso posso escrever `x := 10` e em outro `var x int = 10`?
Também me confunde que em alguns exemplos vejo := sendo usado dentro de funções, mas não no nível do package. Isso é uma limitação da linguagem?
Ficarei grato por uma explicação detalhada com exemplos de quando aplicar cada operador.