`

go语言接口interface(三)

    博客分类:
  • Go
 
阅读更多
package main
import "fmt"


/*
一个结构体实现多个接口
*/


type AInterface interface {
	setName(string)
	getName()string
}

type BInterface interface {
	run(string)
}
//接口的嵌套
type Animaler interface  {
	AInterface
	BInterface

}


type Dog struct {
	name string

}
//结构体是值类型,修改需要用指针类型
func(d *Dog) setName(name string){
	d.name=name
}

func(d Dog) getName()string{
	return d.name
}

func(d Dog) run(name string){
	fmt.Printf("%v is running", name)
}


func main() {
	d := &Dog{
		name:"erha",
	}
	var d1 Animaler = d

	fmt.Println(d1.getName())//erha
	d1.setName("二哈")
	fmt.Println(d1.getName())//二哈

	d1.run(d.name)//二哈 is running

}

 

 

package main

import "fmt"

/*
空接口和类型断言的使用注意事项

切片和结构体赋值给空接口,如果访问切片中的某个值,或者访问结构体的某个属性,会报错
*/


type address struct {
	name string
	phone int
}

func main() {

	mp1 := make(map[string]interface{})

	mp1["username"]="lft"
	mp1["age"]=20

	mp1["hobby"] = []string{"python", "golang"}

//	fmt.Println(mp1["hobby"][0])   //type interface {} does not support indexing

	//使用类型断言解决
	hobby,_ := mp1["hobby"].([]string)

	fmt.Println(hobby[0])  //python

	mp1["address"] = address{
		name:"lft",
		phone:123456789,
	}

	fmt.Println(mp1["address"])  //{lft 123456789}

//	fmt.Println(mp1["address"].name)  //type interface {} is interface with no methods
	//断言解决
	address1, _ := mp1["address"].(address)

	fmt.Println(address1.name)  //lft

}

 

分享到:
评论

相关推荐

    go语言中的interface使用实例

    主要介绍了go语言中的interface使用实例,go语言中的interface是一组未实现的方法的集合,如果某个对象实现了接口中的所有方法,那么此对象就实现了此接口,需要的朋友可以参考下

    浅谈Go语言中的结构体struct & 接口Interface & 反射

    下面小编就为大家带来一篇浅谈Go语言中的结构体struct & 接口Interface & 反射。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    关于Go编程语言的一些常见基础面试题.pdf

    7. Go语言中的接口(Interface)是什么?请简要介绍在Go中的接口实现方式。 8. Go语言中的defer关键字是什么?请说明在Go中defer的作用和用法。 9. 什么是Go语言中的结构体(Struct)?请说明在Go中的结构体定义和...

    go语言接口用法实例分析

    本文实例讲述了go语言接口用法。分享给大家供大家参考。具体分析如下: 首先定义一个接口: 代码如下:type I interface{  Get() int  Put(int)   } 这段话就定义了一个接口,它包含两个函数Get和Put 好了,我的...

    Go语言接口定义与用法示例

    本文实例讲述了Go语言接口定义与用法。分享给大家供大家参考,具体如下: 在Go中,接口interface其实和其他语言的接口意思也没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个...

    go语言web编程

    2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 Go如何使得web工作 3.4 Go的...

    无闻Go语言视频教程

     │ 【Go编程基础】12接口interface  │ 【Go编程基础】13反射reflection  │ 【Go编程基础】14并发concurrency  │ 【Go编程基础】15项目与坑 二、Go Web基础  │ 【Go Web基础】01博客项目设计  │ ...

    Go语言接口用法实例

    本文实例讲述了Go语言接口用法。分享给大家供大家参考。具体分析如下: 接口类型是由一组方法定义的集合。 接口类型的值可以存放实现这些方法的任何值。 代码如下:package main import (  “fmt”  “math” ) ...

    实例学习Golang–接口(一、接口的实现)

    在Go语言中接口(interface)是一种类型,一种抽象的类型。 每个接口类型由数个方法组成。接口的形式代码如下: type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 ) 返回值列表2...

    Go 语言接口

    Go 语言接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 实例 实例 /* 定义接口 */ type interface_name interface { ...

    go-interface-examples

    go-interface-examples 使用Go接口制作更清晰,更可测试的代码的一些示例。 这些假定对Go语法具有一般的了解,并具有编写简单程序的能力。 如果您还没有,那就吧... 如果您是Go语言的新手和/或一般而言相对较新的代码,

    最新go语言中文教程及手册(强烈推荐)

    Go 编程语言是一个使得程序员更加有效率的开源项目。Go 是有表 达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核 和网络应用,而新的类型系统允许构建有性的模块化程序。Go 编译到机器码非常...

    Go 语言中的空接口(推荐)

    在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注...

    Go 语言中关于接口的三个

    接口是一组固定的方法集,由于静态类型的限制,接口变量有时仅能调用其中特定的一些方法。 请看下面这段代码 package main import fmt type Phone interface { call() } type iPhone struct { name string } func...

    interface_impl

    这里是go语言学习笔记4中关于接口的练习,读者可以参考着,自己体会体会。

    Go语言排序与接口实例分析

    本文实例讲述了Go语言排序与接口用法。分享给大家供大家参考。具体如下: 代码如下:import “fmt” type Sorter interface {  Len() int  Less(i, j int) bool  Swap(i, j int) } type Xi []int type Xs []...

    初步解读Golang中的接口相关编写方法

    在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。 Go语言中的接口是一些方法的集合(method set),它指定了对象的行为:如果它(任何数据类型)可以做这些事情,那么...

    GO语言实战六 接口

    接口 接口是用来定义行为的类型。...type notifier interface { notify() } type student struct { name string email string } func main(){ stu1 := student{cdb, 4717@qq.com} sendNotify(&stu1) //sendN

Global site tag (gtag.js) - Google Analytics