zoukankan      html  css  js  c++  java
  • 40_接口类型的使用

    //接口类型是一种抽象类型,他不会暴露所代表的对象的内部直的结构和这个对象支持的基础操作的集合,它们只展示自己的方法.因此接口类型不能将其实例化

    //接口类型描述了一些列的方法的集合

    //接口类型名通常以"er"结尾


    package main
    import "fmt"
    type Hummaner interface {
    	sing() //声明一个方法,并没有实现
    }
    
    
    type Student struct {
    	id   int
    	name string
    }
    type Myi int
    type Mys string
    
    
    func (s Mys) sing() {
    	fmt.Println("字符串在唱歌!!!")
    }
    func (i Myi) sing() {
    	fmt.Println("整型在唱歌!!!")
    }
    func (p Student) sing() {
    	fmt.Println("结构体在唱歌!!!")
    }
    
    
    //多态的实现
    func WhoSing(h Hummaner) { //接口变量当形参
    	h.sing()
    }
    func main() {
    	//只能是自定义变量,或者结构体变量来调用接口中的方法
    	//go中基本基本类型变量不可以调用,接口中的方法
    	//	var i int
    	//	i.sing()//错误,即是定义相关类型的函数,也调用不了
    
    
    	/*
    		1.先定义一个接口变量,.然后定义一个结构体或自定义变量
    		2.把结构体或自定义变量赋值给接口变量
    	*/
    	var h Hummaner
    	var s Mys
    	h = s
    	h.sing() ///字符串在唱歌!!!
    	s.sing()
    	var i Myi
    	i.sing()
    	var p Student = Student{1, "zhao"}
    	p.sing()
    	//多态的实现
    	WhoSing(s)
    	WhoSing(i)
    	WhoSing(p)
    
    
    	//定义一个切片,其类型是结口
    	x := make([]Hummaner, 3)
    	x[0], x[1], x[2] = i, s, p
    	for _, value := range x {
    		value.sing()
    	}
    	//接口就是一组抽象类型的集合,他必须由其他非接口类型实现,而不能自我实现
    	//而且实现接口的接受者参数不能是基本类型,结构体或自定义类型皆可
    
    
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    从ReentrantLock的实现看AQS的原理及应用
    Java 守护线程
    js静态文件编辑器显示操作,但网页显示中文乱码 解决方案
    springmvc 4.3版本集成 Caffeine缓存系统
    chrome浏览器如何设置黑色背景
    电脑型号19 1200 固态SSD
    电脑型号18 1200 固态SSD
    geohash st_distance st_distance_sphere 关系
    Git自动输入账户名密码。明文及SSH私钥2种方式
    一步快速获取 iOS 设备的 UDID
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11565491.html
Copyright © 2011-2022 走看看