Avatar ·

Diferença entre := e = em Go: declaração curta versus atribuição

Olá a todos! Comecei a estudar Go e fiquei confuso com os operadores := e =. Ambos parecem ser usados para trabalhar com variáveis, mas qual é a diferença? Aqui está um exemplo que me confundiu: ```go package main import "fmt" func main() { name := "Anna" // isso funciona var age int = 25 // isso também funciona age = 30 // e isso funciona // name = "Boris" // também tentei isso } ``` Quando escrevo name := "Anna" — tudo ok. Mas se eu primeiro declaro uma variável com var e depois tento usar := com a mesma variável, o compilador reclama: "no new variables on left side of :=". Por quê? Além disso, notei que := só funciona dentro de funções. Se escrevo assim: ```go var version = "1.0" // globalmente — ok // version := "1.0" // globalmente — erro! ``` Por que isso? E em quais casos devo usar :=, e em quais apenas =? Li vários tutoriais, mas ainda estou confuso. Expliquem, por favor, de forma simples, com exemplos, quando usar cada um.