http://golang.org/doc/go_spec.html#Type_assertions
Type assertions are used to get a concrete type or another interface for the underlying value and do not actually change the value:
var a interface{} = 42
var b int = a.(int) / 2
The value 42 does not actually change, the type assertion is exactly what the name implies: an assertion that the variable is of the specified type (and a panic results if it isn't if you don't use the `, ok` notation). Once it's been asserted, you use it as if it were that type; in this case, you can then assign it to an integer or even do math on it without issue.
Conversions actually change the type of the value and give you back an entirely new one:
var a int = int( 3.14 )
3.14 is not an int, so it has to be changed in order to be assigned to one.
--
~Kyle
"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"
— Brian Kernighan