3 ms·
Except there is a fairly large difference with interface{}, in that it is typed. interface{} is more like Object in java than void* from C. If you incorrectly
by kyrra 11y ago
Except there is a fairly large difference with interface{}, in that it is typed. interface{} is more like Object in java than void* from C. If you incorrectly cast an interface{} to a type it's not, it will be a runtime error.
Details: http://research.swtch.com/interfaces http://research.swtch.com/interfaces
- fizzbatter 11y ago> If you incorrectly cast an interface{} to a type it's not, it will be a runtime error. Sidenote, you may or may not have meant a panic - so i just want to clarify. Casting an interface to a type incorrectly will not cause a panic/crash, assuming you use the proper syntax. // Will panic foo := myInterface.(BadType) // Will not panic foo, ok := myInterface.(BadType) In the latter, you simply check if `ok` is true or not. If not, the interface value does not implement the given type/interface.
- 4ad 11y agoGo doesn't have casts. It has conversions and type assertions. This is a type assertion.