github.com/nibnait/go-learn@v0.0.0-20220227013611-dfa47ea6d2da/src/test/chapter/ch2/19_empty_interface_test.go (about) 1 package ch2 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 func doSth(p interface{}) { 9 if i, ok := p.(int); ok { 10 fmt.Println("int", i) 11 return 12 } 13 if i, ok := p.(string); ok { 14 fmt.Println("string", i) 15 return 16 } 17 fmt.Println("unknown type") 18 } 19 20 func doSthSwitch(p interface{}) { 21 switch v := p.(type) { 22 case int: 23 fmt.Println("int", v) 24 case string: 25 fmt.Println("string", v) 26 default: 27 fmt.Println("unknown type") 28 } 29 } 30 31 func TestEmptyInterfaceAssertion(t *testing.T) { 32 doSthSwitch(10) 33 doSthSwitch("xxx") 34 }