Avatar ·

Qu'est-ce que null/nil en Go et comment travailler avec ?

Bonjour à tous ! J'ai commencé à étudier Go et j'ai rencontré le concept de nil. Dans d'autres langages (par exemple, Java ou JavaScript), il y a null, qui provoque souvent des erreurs (NullPointerException). En Go, comme je l'ai compris, on utilise nil, mais le comportement est différent.

Voici ce que j'ai essayé :

package main\n\nimport "fmt"\n\nfunc main() {\n    var p *int\n    fmt.Println(p) // affiche nil\n    // fmt.Println(*p) // panic: runtime error: invalid memory address or nil pointer dereference\n    \n    var s []int\n    fmt.Println(s == nil) // true\n    fmt.Println(len(s))   // 0\n    // s[0] = 1 // panic\n    \n    var m map[string]int\n    fmt.Println(m == nil) // true\n    // m["key"] = 1 // panic\n}\n

Questions :

  1. Pourquoi nil