Type assertion
type assertion doesn’t really convert the interface
type to another definite type, it just provides access to the value of the interface
type, which is usually a common requirement.
The type assertion is made via the syntax x.(T)
, which will determine if the value stored in the x variable is of type T. There are two general scenarios.
- if T is not an interface type but a concrete type, then this assertion will assert whether the dynamic type of x is the same as T
- If T is an interface type, this assertion asserts whether the dynamic type of x implements T
Note: When asserting, the type of x must be
interface{}
So how do you understand the phrases T = interface
and T ! = interface
?
T ! = interface
is a normal assertion of whether x (interface) is equal to T (really type), where x must be an interface and T can be any type but a variable.T = interface
is not an assertion, but an assertion on interface, where x must be interface and T must be interface
As shown in the following code.
|
|
Type Switching
type switch is an application scenario for type assertion, which is done by asserting a variable of interface type several times to match to the real data type.
|
|