I think it gets more interesting when using several, often complex (struct) types in the same switch statement.
v is not being reassigned, it is being declared (note := rather than =). But its a little complicated, because type switches are a special syntax construct that is similar to, but different than, regular expression switches. See, "Type switches" in the language reference [1]
[1] you'll have to scroll down a little within the section on Switch statements: http://golang.org/ref/spec#Switch_statements
Perhaps it would have been cleaner to use "*" or some other operator symbol instead of the reserved word "type"
Specifically, type switches are a specific syntax construct that look very similar to normal switches, but switched on something that looks like a type assertion with "type" in place of an actual type.