zoukankan      html  css  js  c++  java
  • 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()
    
    }
    

      

    大道至简
  • 相关阅读:
    jmeter—— vars 和 props 用法
    java—把字符串转成list类型,并遍历列表
    fillder—篡改请求参数重新请求
    Jmeter—变量嵌套变量方法
    python——logging日志模块
    python学习——使用excel读写测试数据
    python学习——单元测试unittest
    python学习——类
    python学习——异常
    资源信息汇总
  • 原文地址:https://www.cnblogs.com/liurong07/p/10621351.html
Copyright © 2011-2022 走看看