zoukankan      html  css  js  c++  java
  • go语言接口断言

    接口断言

    因为空接口 interface{}没有定义任何函数,因此 Go 中所有类型都实现了空接口。当一个函数的形参是interface{},那么在函数中,需要对形参进行断言,从而得到它的真实类型。

    语法格式:

    // 安全类型断言
    
    <目标类型的值>,<布尔参数> := <表达式>.( 目标类型 )
    
    //非安全类型断言
    
    <目标类型的值> := <表达式>.( 目标类型 )
    
    

    示例代码:

    package main
    
    import "fmt"
    
    func main() {
    
       var i1 interface{} = new (Student)
       s := i1.(Student) //不安全,如果断言失败,会直接panic
    
       fmt.Println(s)
    
    
    	var i2 interface{} = new(Student)
    	s, ok := i2.(Student) //安全,断言失败,也不会panic,只是ok的值为false
    	if ok {
    		fmt.Println(s)
    	}
    }
    
    type Student struct {
    
    }
    
    

    断言其实还有另一种形式,就是用在利用 switch语句判断接口的类型。每一个case会被顺序地考虑。当命中一个case 时,就会执行 case 中的语句,因此 case 语句的顺序是很重要的,因为很有可能会有多个 case匹配的情况。

    示例代码:

    switch ins:=s.(type) {
    	case Triangle:
    		fmt.Println("三角形。。。",ins.a,ins.b,ins.c)
    	case Circle:
    		fmt.Println("圆形。。。。",ins.radius)
    	case int:
    		fmt.Println("整型数据。。")
    	}
    
  • 相关阅读:
    NSCoding相关
    object c 运行时编程指南
    iphone 框架体系结构
    Object c 反射
    hook qq 聊天内容(转)
    iphone地址本操作
    通过xib文件创建子控件(转)
    iphone生成唯一字符串
    反射手册笔记 6.NET组件模型
    IDC项目技术总结
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/12778961.html
Copyright © 2011-2022 走看看