| |
| ▲ | rowanseymour 2 days ago | parent | next [-] | | To be precise.. empty slices and maps sometimes behave like nil (len, range etc) and sometimes not (inserting into a nil map). The former is a neat convenience, and I think extending that to JSON marshaling makes sense. | |
| ▲ | stackedinserter 2 days ago | parent | prev [-] | | No, empty slices and empty maps in Go are not nil. | | |
| ▲ | maleldil 2 days ago | parent [-] | | This is the idiomatic way of declaring empty slices in Go, and it prints true: var slice []string
fmt.Println(slice == nil)
| | |
| ▲ | everybodyknows 2 days ago | parent | next [-] | | Whether to judge the line below idiomatic, or not, is a question I leave to the authorities -- but it is highly convenient, and prints "false". slice := []string{}
fmt.Println(slice == nil)
| |
| ▲ | tux3 2 days ago | parent | prev | next [-] | | This is indeed a nil slice, and it does have len() == 0, but Go also has a concept of empty slices separate from nil slices The language just has a bad habit of confusing them some of the time, but not consistently, so you can still occasionally get bit by the difference As someone who uses Go a lot, it's just one of those things... | |
| ▲ | stackedinserter 2 days ago | parent | prev | next [-] | | Yes because it's nil. You declared it but not created. Same for map. Same for var something *string | |
| ▲ | 2 days ago | parent | prev [-] | | [deleted] |
|
|
|