函数的传值中,interface{}是可以传任意参数的,就像java的object那样。

下面上我第一次想当然写的 ** 错误 **代码

  1. package main

  2. func main() {

  3. Any(2)

  4. Any("666")

  5. }

  6. func Any(v interface{}) {

  7. v1:=int(v)

  8. println(v1)

  9. }

我只是想它能通过编译而已,因为上面的错误代码并没有任何的语法错误,心里只有666想说,下面是编译的错误提示:

cannot convert v (type interface {}) to type int: need type assertion

正确的代码就可以保证程序不出什么差错。

  1. package main

  2. func main() {

  3. Any(2)

  4. Any("666")

  5. }

  6. func Any(v interface{}) {

  7. if v2, ok := v.(string);ok{

  8. println(v2)

  9. }else if v3,ok2:=v.(int);ok2{

  10. println(v3)

  11. }

  12. }

复制代码

输出如下

  1. 2

  2. 666