Dave asks “Is it going to compile and if yes, what will be the output”? If you look closely, it is related to zero value for a type. When we initialize m := make(map[string]int), both string and int gets "" and 0 values respectively. So increment works as usual.

language keywords such as default etc. should not be used as an identifier. string and len are predeclared identifiers. Predeclared identifiers are at universe block, so you can can shadow them inside smaller scopes, including the package block. But don’t shadow predeclared identifiers as it will make code less readable and error prone.

There are many more puzzles in Dave’s slide. Go have a read.

Note - The code examples here are used from Dave’s talk. My intention is to solve and think about some puzzles here.