zoukankan      html  css  js  c++  java
  • Go语言关于Type Assertions的疑问

    我在"The Go Programming Language Specification"中读到了关于x.(T)这样的语法可以对变量是否符合某一type或interface进行判断于是我写了如下的代码

    func main() {
    	v:="aaaaaa"
    	s,ok:=v.(string)
    	fmt.Printf("%s:%b
    ",s,ok)
    
    }
    

      结果是悲催的编译错误

    func main() {
    	v:="aaaaaa"
    	checkit(v)
    }
    func checkit(v interface{}){
    	s,ok:=v.(string)
    	fmt.Printf("%s:%b
    ",s,ok)
    }
    

      于是运行成功
    然后我冷静下来思考这个问题为毛呢......

    x.(T)这样的语法
    这样的语法只适应于x是interface类型

    函数
    func checkit(v interface{}){
        s,ok:=v.(string)
        fmt.Printf("%s:%b ",s,ok)
    }

    相当于把参数转换成了interface类型了

  • 相关阅读:
    匿名内部类详解
    成员内部类详解
    内部类
    局部内部类详解
    switch
    Enum 类型
    循环
    标号
    软件开发模型
    RUP
  • 原文地址:https://www.cnblogs.com/oxspirt/p/10933887.html
Copyright © 2011-2022 走看看