// 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. Wannafly Camp 2020 Day 5A Alternative Accounts

    There are n different accounts on the website, and some of them competed in the recent k contests. H ...

  2. 开发过程中遇到的代理Proxy配置问题

    proxy代理问题 在公司不能访问外网的时候,使用IDEA开发.. 需要配置IDEA Proxy Maven Git IDEA开发工具Proxy配置,使用Spring Boot快读构建工具 Maven ...

  3. http接口的调用

    1.按照文档先写入参数,这里主要介绍 Json格式的String字符串,包括拼接数组 String sqr_arry [] = new String[rowList.size()]; for(int ...

  4. python面试的100题(16)

    Python高级 元类 42.Python中类方法.类实例方法.静态方法有何区别? 类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对 ...

  5. 并查集路径分裂优化 UnionFind PathSpliting(C++)

    /* * UnionFind.h * 有两种实现方式,QuickFind和QuickUnion * QuickFind: * 查找O(1) * 合并O(n) * QuickUnion:(建议使用) * ...

  6. gets(), getline(), cin.getline()

    gets(str), getline(cin, s), cin.getline(str, len),这三个函数都是读入一行字符串的函数,下面是这三个函数的区别 1. gets() 函数是 C 语言的函 ...

  7. C++-对象指针的滥用

    C++ 中经常出现使用对象指针,而不是直接使用对象本身的代码,比如下面这个例子: Object *myObject = new Object; 而不是使用: myObject.testFunc(); ...

  8. Git-免密提交

    全局设置git免密提交,打开git-bash输入命令: git config credential.helper store --global 单独对某个项目仓库设置时不加  --global 设置之 ...

  9. Dapper简介

    Dapper文档 一,介绍:Dapper是一款轻量级ORM工具.如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得 ...

  10. laravel如何A表中包含B表中信息

    A表中如何包含B表中的信息 首先看A表的信息 接着看B表的信息 我的需求就是 A表字段name对应B表字段ream_name然后得到B表的对应主键ID要在A表中查询出来 发现问题就是查询出来的id和A ...