Avatar ·

Qual a diferença entre fmt.Println() e println() em Go? Quando usar cada um?

Olá a todos! Comecei a estudar Go recentemente e notei que para exibir dados no console posso usar tanto `fmt.Println()` quanto apenas `println()`. Por exemplo, ambas as opções funcionam: ```go package main func main() { fmt.Println("Olá, mundo!") println("Olá, mundo!") } ``` Mas percebi que na maioria dos exemplos e tutoriais usam `fmt.Println()`. Ao mesmo tempo, `println()` também está na biblioteca padrão (ou é uma função embutida?). Fico confuso porque: 1. Ao usar `fmt.Println()` é necessário importar o pacote `fmt`, enquanto `println()` funciona sem importação. 2. `fmt.Println()` consegue exibir tipos de dados complexos (slices, structs), e `println()` também parece conseguir. 3. Mas ouvi dizer que `println()` não é um Go "puro" e não é recomendado para uso em produção. Expliquem, por favor, qual é a diferença? Quando devo usar `fmt.Println()` e quando posso usar `println()`? Existem armadilhas? E por que tantos exemplos usam e