golang接口的使用(练习一)

在go语言中,一个类只要实现了接口要求的所有函数,我们就说这个类实现了这个接口。
golang接口赋值实现方式一:将对象实例赋值给接口

package main

import "fmt"

//定义一个Animal接口,实现飞和跑的功能
type Animal interface {
    Fly()
    Run()
}

//定义一个Bird类
type Bird struct {

}

//通过类实现接口的函数功能

func (bird Bird) Fly()   {
    fmt.Println("the bird is flying!!!")
}

func (bird Bird) Run()  {
    fmt.Println("the bird is running!!!")

}

func main()  {

    // 声明一个Animal接口类型的变量
    var animal Animal
    //声明一个Bird类型的变量,并将其置0
    //new()函数是一个用来分配内存的内建函数,它不初始化内存,只将其置0。
    bird := new(Bird)

    //把bird对象赋值给animal接口
    animal = bird
    //调用接口中的函数功能
    animal.Fly()
    animal.Run()

}

golang接口赋值实现方式二:将接口赋值给接口

package main

import "fmt"

//定义一个Animal接口,实现飞和跑的功能
type Animal interface {
    Fly()
    Run()
}

type Animal2 interface {
    Fly()

}

//定义一个Bird类
type Bird struct {

}

//通过类实现接口的函数功能

func (bird Bird) Fly()   {
    fmt.Println("the bird is flying!!!")
}

func (bird Bird) Run()  {
    fmt.Println("the bird is running!!!")

}

func main()  {

    // 声明一个Animal接口类型的变量
    var animal Animal
    var animal2 Animal2
    //声明一个Bird类型的变量,并将其置0
    //new()函数是一个用来分配内存的内建函数,它不初始化内存,只将其置0。
    bird := new(Bird)

    //把bird对象赋值给animal接口
    animal = bird

    //将animal接口赋值给animal2,注意函数功能包含关系,包含方法多的接口可以赋值给方法少的接口,反之,则不行。
    animal2 = animal
    //调用接口中的函数功能
    animal.Fly()
    animal.Run()
    animal2.Fly()

}

原文地址:http://blog.51cto.com/huwho/2307623

时间: 2024-11-09 09:47:43

golang接口的使用(练习一)的相关文章

Golang 接口与反射知识要点

目录 Golang 接口与反射知识要点 1. 接口类型变量 2. 类型断言 3. 鸭子类型 4. 反射机制 5. reflect 包 TypeOf().ValueOf() Type().Kind() Interface() 6. 反射对象的可设置性 SetXXX(), CanSet() Elem() 7. Struct 的反射 NumField(), Type.Field(i int) Value.Field(i int) 参考文档 Golang 接口与反射知识要点 这篇文章以 Go 官方经典博

探究golang接口

今天看了<Go 语言中的方法,接口和嵌入类型>所以想对比以前对C/C++相关知识进一步理解golang的接口.指针.参数传递. 接口 根据<Go 语言中的方法,接口和嵌入类型>的描述可以看出,接口去调用结构体的方法时需要针对接受者的不同去区分,即: 接收者是指针*T时,接口实例必须是指针 接收者是值 T时,接口实力可以是指针也可以是值 接口的定义和类型转换与接收者的定义是关联的 文章中的示例是通过接口作为函数参数的方式展现的,这里我直接使用变量来进行实验: package main

golang 接口开发入门01- 从0开始构建项目

之前写了两篇golang开发入门文章,太过潦草,赶着10.1 放假的前夕,想着还是要认真对待自己写的东西,记录学习的点滴,以后也许会忘了现在学习的东西,但是好歹留下一些文字,同时也希望能给花时间读我博客的人真正有些帮助. 前期准备 因为golang 之前断断续续学过一点,所以现在就以开发一个用户管理这样简单的功能入手.如果你现在在看我的这篇文章,你需要要具备以下知识点 1.golang 开发环境搭建 2.golang 的基本语法 3.面向对象和mvc开发思想 搭建项目 我使用eclipse作为开

golang 接口笔记

一.概念 接口类型是对其它类型行为的抽象和概括:因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力. Go语言中接口类型的独特之处在于它是满足隐式实现的.也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型:简单地拥有一些必需的方法就足够了. 这种设计可以让你创建一个新的接口类型满足已经存在的具体类型却不会去改变这些类型的定义:当我们使用的类型来自于不受我们控制的包时这种设计尤其有用. 二.接口的声明及使用 package mai

golang 接口

接口类型是对其它类型行为的抽象和概括:因为接口类型不会和特定的实现细节绑定在一 起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力. 很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐 式实现的.也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型:简单地 拥有一些必需的方法就足够了.这种设计可以让你创建一个新的接口类型满足已经存在的具 体类型却不会去改变这些类型的定义:当我们使用的类型来自于不受我们控制的包时这种设 计尤其有用. 原文地

golang接口请求方法

1.方法1:map[persistent_code: errcode:0 errmsg:ok unionid:0hY5m7YiPiSy1tmdVsiPDaItgiEiE openid:yseuqjbnfunc GetInfo(token string)(){baseurl := "https://oapi.dingtalk.com/sns/getuserinfo?sns_token="accessUrl := baseurl + tokenresponseToken,err:= htt

golang接口的封装

一.声明接口 1 type Result interface { 2 LastInsertId() (int64, error) 3 RowsAffected() (int64, error) 4 } 二.实现接口,这里却将接口作为成员变量,进而将接口的实现转换为接口的调用,仅仅是封装了接口,实际上并没有真的实现,而是坐等别人去实现 1 // 一把锁 2 // 一个结果集的假接口实现,表示需要的功能,让他人来具体实现.假装实现了某个接口,其实是调用了内部接口的对应方法 3 type driver

golang 接口interface{}、断言、switch type

第一大部分 interface{} 可以接受任何类型的对象值 获取interface{}队形的数据类型,可以使用断言,或者 switch type 来实现 // Assertion project main.go package main import ( "fmt" ) type Bag struct { Key string } type Bag2 struct { Key int } func main() { var b1 interface{} var b2 interfac

golang-mysql

1.mysql配置 CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, dealer CHAR(20) DEFAULT '' NOT NULL, price DOUBLE(16,2) DEFAULT '0.00' NOT NULL, PRIMARY KEY(article, dealer)); INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),