6 ms·
You can actually write: value := map[key] and if map[key] doesn't exist, value will (still) be set to the "zero value" of the map's type. The actual reason
by jimsmart 5y ago
You can actually write:
value := map[key]
and if map[key] doesn't exist, value will (still) be set to the "zero value" of the map's type.
The actual reason you cannot simply write:
if(map[key]) { ...
aside from the extraneous parens, is because Go syntax does not permit implicit default values/truthiness in its 'if' statements like that (as you say "if wants to have a boolean expression"). That's the real reason for the verbosity here.
But you certainly can write:
if map[key] != "" { ...
if the map contained strings, or:
if map[key] { ...
if it contained booleans, etc. (For what that may be worth: checking for default value isn't the same as checking membership in all instances, of course).
Because map[key] can in fact return one — or two — values, depending on its usage context.