// 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() }

  

go基础_接口断言的更多相关文章

  1. java_基础_接口和抽象类

    1.接口 java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征 示例代码: interface MyInterface{ void myMethod(); } class T ...

  2. 29.Java基础_接口

    接口的成员特点

  3. 30.Java基础_接口_抽象类_具体类实现案例

    public interface SpeakEnglish { public abstract void speak(); } public abstract class Person { priva ...

  4. GO学习-(14) Go语言基础之接口

    Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...

  5. Go语言基础之接口

    Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口介绍 在Go语言中接口(interface)是一种类型,一种抽象的类 ...

  6. python基础_格式化输出(%用法和format用法)(转载)

    python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...

  7. Go part 6 接口,接口排序,接口嵌套组合,接口与类型转换,接口断言

    接口 接口是一种协议,比如一个汽车的协议,就应该有 “行驶”,“按喇叭”,“开远光” 等功能(方法),这就是实现汽车的协议规范,完成了汽车的协议规范,就实现了汽车的接口,然后使用接口 接口的定义:本身 ...

  8. go 的方法集和接口断言

    Go 的方法集与接口断言 方法集 引子 首先来看一段代码: package main import "fmt" func main() { var v IpmHelloByValu ...

  9. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

随机推荐

  1. .net Core 安装在linux上

    1.安装 .net Core 参考官方网站 https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 2.发布应用程 ...

  2. Java开发技术

    1.基础技术 数据结构与算法   逻辑结构:数据对象中的数据元素之间的逻辑关系 1.集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系. 2.线性结构:线性结构中的数据元素之间是一对一的关 ...

  3. jenkins pipline 如何禁止任务并行

    背景: 我测试的一个项目CI包括好几个步骤,但是有的步骤是不能并行的,否则会互相影响 处理过程: [方案一]:不推荐此方案 在每个步骤里面的shell脚本中加进程判断 示例:比如本任务有4个步骤,第2 ...

  4. 小匠第一周期打卡笔记-Task02

    一.文本预处理 预处理通常包括四个步骤: 读入文本 分词 建立字典,将每个词映射到一个唯一的索引(index) 将文本从词的序列转换为索引的序列,方便输入模型 读入文本: import collect ...

  5. C语言结构体数组遇上typedef

    昨天韩同学在做数据结构题的时候,问了我一个关于typedef 与结构体数组的问题: typedef struct vexnode { int vertex; arcnode* firstarc; }a ...

  6. 一则关于控制文件全部丢失后如何重新编目RMAN元数据的简单实验

    主题:一则简单的RMAN元数据编目实验,来自于博客园AskScuti. 场景:RMAN备份完整情况下,未使用Catalog目录库.删除了所有的控制文件,在手工重建后,导致记录在控制文件中的RMAN备份 ...

  7. 《Java程序设计》第十一周学习总结

    20175334 <Java程序设计>第十一周学习总结 教材学习内容总结 第十三章 URL类 一个URL对象通常包含最基本的三部分信息:协议.地址.资源. URL对象调用 InputStr ...

  8. SpringBoot+springDataJpa实现单表字段动态部分更新

    写在前面 所谓的动态部分更新是指:并非对数据记录的所有字段整体更新,而是知道运行时才确定哪个或者哪些字段需要被更新. 1)Spring Data Jpa对于Entity的更新,是对数据表中Entity ...

  9. 【STM32H7教程】第59章 STM32H7的DAC基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第59章       STM32H7的DAC基础知识和HAL库 ...

  10. JS高级---总结继承

    总结继承 面向对象特性: 封装, 继承,多态 继承, 类与类之间的关系, 面向对象的语言的继承是为了多态服务的   js不是面向对象的语言, 但是可以模拟面向对象,模拟继承,为了节省内存   继承: ...