empty_interface.go 664 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package main
  2. import "fmt"
  3. var i = 5
  4. var str = "ABC"
  5. type Person struct {
  6. name string
  7. age int
  8. }
  9. type Any interface{}
  10. func main() {
  11. var val Any
  12. val = 5
  13. fmt.Printf("val has the value: %v\n", val)
  14. val = str
  15. fmt.Printf("val has the value: %v\n", val)
  16. pers1 := new(Person)
  17. pers1.name = "Rob Pike"
  18. pers1.age = 55
  19. val = pers1
  20. fmt.Printf("val has the value: %v\n", val)
  21. switch t := val.(type) {
  22. case int:
  23. fmt.Printf("Type int %T\n", t)
  24. case string:
  25. fmt.Printf("Type string %T\n", t)
  26. case bool:
  27. fmt.Printf("Type boolean %T\n", t)
  28. case *Person:
  29. fmt.Printf("Type pointer to Person %T\n", *t)
  30. default:
  31. fmt.Printf("Unexpected type %T", t)
  32. }
  33. }