June 2017
Beginner
1091 pages
22h 9m
English
When an interface (empty or otherwise) is assigned to a variable, it carries type information that can be queried at runtime. Type assertion is a mechanism that is available in Go to idiomatically narrow a variable (of interface type) down to a concrete type and value that are stored in the variable. The following example uses type assertion in the eat function to select which food type to select in the eat function:
type food interface { eat() } type veggie string func (v veggie) eat() { fmt.Println("Eating", v) } type meat string func (m meat) eat() { fmt.Println("Eating tasty", m) } func eat(f food) { veg, ok := f.(veggie) if ok { if veg == "okra" { fmt.Println("Yuk! not eating ", veg) }else{ veg.eat() } return } mt, ok := f.(meat) ...Read now
Unlock full access