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()
    	}
    	//接口就是一组抽象类型的集合,他必须由其他非接口类型实现,而不能自我实现
    	//而且实现接口的接受者参数不能是基本类型,结构体或自定义类型皆可
    
    
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    var、let、const的区别
    StringBuilder/StringBuffer源码阅读笔记
    Java String类源码阅读笔记
    超过三十岁就不适合写代码了?看看国外程序员怎么说
    Kubernetes笔记(五):了解Pod(容器组)
    Java安全之Javassist动态编程
    Java安全之Commons Collections1分析(三)
    Java安全之Commons Collections1分析(二)
    Java安全之Commons Collections1分析(一)
    Java安全之URLDNS链
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11565491.html
Copyright © 2011-2022 走看看