There are quite a few ways to create new maps and slices in Go. Which one is best? Or perhaps better asked, which one is best in your situation? Let's take a look. Slices varStyle [] literalStyle := [] {} newStyle := ([] ) makeStyle := ([] , ) var string string new string make string 0 is the idiomatic way to declare an slice. The slice is actually , which means it will be when marshalled to JSON and will succeed nil checks. var varStyle []string empty nil null should probably only be used when the literal is going to , as in . Otherwise prefer literalStyle := []string{} start with values in it literalStyle := []string{"cat", "dog", etc} make() returns a pointer to the slice. Same as . newStyle := new([]string) ptrStyle := &[]string{} Only use if you want a pointer. is the same as the literal style, but is preferred for idiomatic reasons when the . Make() allows the slice to be initialized with a starting length and capacity, which can have good performance implications in some circumstances: makeStyle := make([]string, 0) slice doesn't need non-zero starting values makeStyle := make([]string, len, cap) Maps varStyle [ ] literalStyle = [ ] {} newStyle := ( [ ] ) makeStyle := ( [ ] ) var map int int map string int new map string int make map string int creates a nil map. Writing (but not reading interestingly enough) will cause a panic. You probably don't want a nil map. var varStyle map[int]int using the literal syntax is just fine, though idiomatically its probably best to use a make function. Developers are more used to seeing a make function and make offers some additional features. literalStyle := map[string]int{} := creates a pointer to a nil map... very often not what you want. newStyle new(map[string]int) ! If you know your space requirements you can optimize for allocation by passing in a size: makeStyle := make(map[string]int) This is probably what you want makeStyle := ( [ ] , ) // Give me a map with room for 10 items before needing to allocate more space make map string int 10 Want to learn more? Check out the Article! How To: Global Constant Maps and Slices Thanks For Reading Follow us on Twitter if you have any questions or comments @q_vault Take game-like coding courses on Qvault Classroom to our Newsletter for more educational articles Subscribe