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  }