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()
    	}
    	//接口就是一组抽象类型的集合,他必须由其他非接口类型实现,而不能自我实现
    	//而且实现接口的接受者参数不能是基本类型,结构体或自定义类型皆可
    
    
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    WPF应用程序的生命周期
    问题解决(一)在ipad上通过safari浏览文档
    C#网络编程之TCP协议(一)
    认识webMethods
    sql存储过程与webMethods
    Start to study Introduction to Algorithms
    堆和栈的区别 (转贴)
    win7平台下使用MASMPlus搭建汇编环境
    makefile
    struct类型声明的疑问
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11565491.html
Copyright © 2011-2022 走看看