Go - Type Assertions
Syntax
The expression x.(T)
is called a type assertion.
go
// Assert that `x` is not nil and is of type `T`.
// If `T` is an interface, assert that `x` implements `T`.
x.(T)
Usage
go
// Interface value.
var i any = "hello" // any is alias for interface{}
// Assert that the interface value is of type `string`
// and assign the undelying value to the variable `s`.
s := i.(string) // "hello"
// If the interface does not hold the type, the statement will trigger a panic.
n := i.(int) // runtime panic
// A type assertion can return 2 values, the underlying value and a boolean
// which will be `true` if the assertion holds.
// If the assertion does not hold, the boolean will be `false` and the value
// of the assigned variable will be the zero value of the tested type.
s, ok := i.(int) // 0, false (no runtime panic)