O que é null/nil em Go e como trabalhar com ele?
Olá a todos! Comecei a estudar Go e me deparei com o conceito de nil. Em outras linguagens (como Java ou JavaScript) existe null, que frequentemente causa erros (NullPointerException). Em Go, pelo que entendi, usa-se nil, mas o comportamento é diferente.
Aqui está o que tentei:
package main
import "fmt"
func main() {
var p *int
fmt.Println(p) // imprime nil
// fmt.Println(*p) // panic: runtime error: invalid memory address or nil pointer dereference
var s []int
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
// s[0] = 1 // panic
var m map[string]int
fmt.Println(m == nil) // true
// m["key"] = 1 // panic
}
Perguntas:
- Por que
nilem Go não leva à criação automática de estruturas vazias (ao contrário denullem algumas linguagens de programação)? - Como verificar corretamente se é
nilantes de usar ponteiros, slices, maps e outros tipos?
No answers yet.
Faça login para deixar uma resposta
Blogs