Golang中用interface{}接收任何参数与强转

函数的传值中,interface{}是可以传任意参数的,就像java的object那样。 下面上我第一次想当然写的 ** 错误 **代码

package main

func main() {



    Any(2)

    Any("666")

}



func Any(v interface{})  {

     v1:=int(v)

     println(v1)  

}

我只是想它能通过编译而已,因为上面的错误代码并没有任何的语法错误,心里只有666想说,下面是编译的错误提示: cannot convert v (type interface {}) to type int: need type assertion 正确的代码就可以保证程序不出什么差错。

package main

func main() {

    Any(2)

    Any("666")

}

func Any(v interface{})  {



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

        println(v2)

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

        println(v3)

    }

}


输出如下
2

666


原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mukekeheart的iOS之旅

Java基础——异常体系

在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: ?    所有的异常都是由Throwable继承而来,在下一层立...

28670
来自专栏转载gongluck的CSDN博客

Lua学习笔记

--Lua笔记-- --0.Lua开篇-- --http://www.cnblogs.com/stephen-liu74/archive/2012/06/11/...

72360
来自专栏Java大联盟

Java面试手册:核心基础-3

2.数组有没有length()这个方法? String有没有length()这个方法?

21430
来自专栏Java 源码分析

Java 虚拟机运行时数据区

运行时数据区: Java 虚拟机的运行时数据区按照大的可以分为线程独立使用的数据区,和所有线程共享的数据区。 一.线程独立使用数据区 1.程序计数器 程序计数器...

35440
来自专栏java学习

Java每日一练(2017/7/7)

1 (单选题)有以下程序片段,下列哪个选项不能插入到行 1 。()。 1. 2.public class A{ 3.//do sth 4. } A publ...

413110
来自专栏DT乱“码”

java asm 框架 浅析

什么是asm呢?asm是assembly的缩写,是汇编的称号,对于java而言,asm就是字节码级别的编程。   而这里说到的asm是指objectweb as...

28590
来自专栏Android开发指南

7:多线程

31080
来自专栏我是攻城师

重温java代理模式

30490
来自专栏别先生

python的学习和使用

20400
来自专栏电光石火

null或空值的判断处理

1,错误用法一: if (name == "") {      //do something } 2,错误用法二: if (name.equals(""))...

190100

扫码关注云+社区

领取腾讯云代金券