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