• go基础_接口断言


    // interface
    package main
    
    import (
    	"fmt"
    )
    
    //定义一个接口,接口名字Inter,接口的方法集有2个方法
    type Inter interface {
    	//声明方法
    	Ping()
    	Pang()
    }
    
    //方法的定义
    //Ping方法的接收者(适用对象)是St类型
    func (St) Ping() {
    	fmt.Println("ping")
    }
    
    //Pang方法的接收者(适用对象)是*St类型
    func (*St) Pang() {
    	fmt.Println("pang")
    }
    
    //定义一个接口,接口名字Anter,接口嵌套了Inter接口,另外还包括一个方法String
    type Anter interface {
    	Inter
    	String()
    }
    
    type Str string
    
    // 定义String方法,接收者是string
    func (Str) String() {
    	fmt.Println("String method")
    }
    
    //定义一个struct,名字是St,里面只有1个元素string
    type St struct {
    	Name string
    }
    
    func main() {
    	fmt.Println("Hello World!")
    
    	//st是St类型,并做了初始化
    	st := &St{"andes"}
    
    	// 变量i是接口类型,并做了初始化,初始化为st
    	var i interface{} = st
    
    	/*接口断言,Inter是接口类型名, i绑定的实例类型st满足接口类型Inter,
    	那么o的类型就是Inter,o就是i的副本*/
    	o := i.(Inter)
    	o.Ping()
    	o.Pang()
    
    	/*接口断言,*St是具体类型名,i绑定的实例类型st就是*St类型,
    	所以赋值结果s的类型就是*St,s结果是st的副本*/
    	s := i.(*St)
    	fmt.Println(s.Name)
    
    	//	/*接口断言, Anter是接口类型,i绑定的实例类型st不满足接口类型Anter,
    	//	此时会出异常*/
    	//	p := i.(Anter)
    	//	p.Ping()
    	//	p.Pang()
    
    }
    

      

    大道至简
  • 相关阅读:
    chrome 的 css hack
    WebService报用户名密码错误
    银行系统数据加密方法
    (转)让插入到 innerHTML 中的 script 跑起来
    JSP导出Excel
    简单使用JDOM解析XML 完整版 转
    IO流读取文件
    JSP下载服务器文件
    (转JAVAEYE)System类方法大全
    list 排序
  • 原文地址:https://www.cnblogs.com/liurong07/p/10621351.html
Copyright © 2020-2023  润新知