`

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语言实战.pdf_go语言_Go_go_Go语言实战_

    在类型系统上,Go语言支持接口(Interface),这是一种动态类型检查机制。通过接口,开发者可以实现面向切面编程,提高了代码的灵活性和可扩展性。此外,Go还提供了一种称为“反射”(Reflection)的功能,可以允许...

    Go语言学习笔记.pdf 共174页

    本笔记共分为三大部分:Go语言基础、标准库和扩展库。 Go语言基础 在Go语言基础部分,作者详细介绍了Go语言的基础知识,包括变量、基本类型、类型转换、常量、字符串、运算符、指针、保留字、控制结构、自定义类型...

    Go语言基础、进阶、提高课程 第十八节Go语言 接口1

    在Go语言中,接口是一种非常重要的特性,它与传统面向对象语言中的概念有所不同。Go语言没有类和继承,但它提供了接口来实现多态性。接口在Go语言中扮演着规范和契约的角色,允许不同类型的结构体共享相同的行为,即...

    Go:Go语言反射与接口教程

    #### 一、Go语言接口基础 ##### 1.1 接口的定义与使用 在Go语言中,接口是一种特殊类型,它定义了一个方法集。一个类型如果实现了接口中定义的所有方法,则认为该类型实现了这个接口。这种隐式的实现方式使得Go...

    go语言实战源码

    2. **接口(Interface)**:Go语言的接口非常灵活,是实现面向切面编程和多态的关键。源码中会展示如何定义和使用接口,以及接口在类型系统中的作用。 3. **结构体和方法**:Go语言支持结构体和关联的方法,这对于...

    go语言项目实战源码资料

    2. **面向对象编程**:虽然Go语言不完全支持面向对象编程,但通过接口(interface)和结构体(struct)可以实现类似的功能,理解如何定义和使用接口是重要的。 3. **并发编程**:Go语言的并发特性主要通过...

    golang基础教程-go语言快速入门.zip

    5. **接口(Interface)**:Go语言的接口是一种类型规范,通过接口可以实现多态。 三、Go语言的控制流程 1. **条件语句**:包括`if`、`else if`和`else`,支持短路逻辑。 2. **循环语句**:包括`for`、`while`...

    《Go 语言设计与实现》示例代码.zip

    2. **接口(Interface)**:Go语言的接口是一种类型抽象,它定义了一组方法签名。任何实现了接口所定义方法的类型都被称为实现了该接口。这种鸭子类型的实现方式让Go语言具有了高度的灵活性和可扩展性。 3. **...

    go语言学习示例

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它旨在提高程序员的生产效率和系统的可扩展性,特别适合构建大规模的网络服务和分布式系统。本资料包是...

    学习GO语言中文版

    此外,Go语言的接口(interface)类型也提供了灵活的多态性。 6. 社区支持与学习资源 文档中感谢名单上列出了许多Go语言社区成员,这些名字来自于对原版书籍的贡献者和对中文翻译本提供帮助的朋友们。这反映了Go...

    go语言学习例子

    Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。这个“go语言学习例子”压缩包包含了一系列的Go语言源代码文件,旨在帮助初学者更好地理解和掌握Go语言的...

    Go语言入门经典 源码

    - **接口(interface)**:Go语言的接口定义了一组方法签名,实现该接口意味着实现了这些方法。 4. **并发编程** - **goroutine**:轻量级线程,实现高并发处理,用`go`关键字启动。 - **channel**:用于...

    go语言基本语言源码

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收式的、具有C风格的编程语言。它的设计目标是提高编程效率,简化多线程编程,以及优化网络和系统服务的开发。下面将详细讨论Go...

    golang基础之Interface接口的使用

    在 Go 语言中,接口(Interface)是一种强大的抽象机制,它允许我们定义一组方法签名,任何类型只要实现了这些方法即可被视为实现了该接口。接口的这种特性使得 Go 语言具有高度的灵活性和可扩展性,是实现面向接口...

    Go语言开发包

    - **接口(Interface)**:Go语言的接口提供了一种抽象能力,通过接口可以实现面向接口编程,增强代码的灵活性。 - **类型系统**:Go语言支持结构体和指针,还拥有内置类型以及用户自定义类型,类型系统严谨且灵活...

    go语言中的interface使用实例

    在Go语言中,接口(Interface)是一种非常重要的概念,它定义了一组方法的集合。与许多其他面向对象的语言不同,在Go语言中,一个类型(无论是自定义类型还是内建类型)如果实现了某个接口所指定的所有方法,则认为...

    Go语言学习笔记

    * 关键字:Go语言共有25个关键字或保留字,例如break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for...

    go语言高级编程_cut6zj_go语言_Go_golang_golang高级编程_

    2. **接口(Interface)**:Go语言的接口设计十分灵活,它是一种动态类型检查机制。通过接口,我们可以实现多态性,编写出更加通用和可复用的代码。理解接口的工作原理,以及如何利用接口进行设计模式的实现,对于...

    go语言源码包

    7. **接口(Interface)**:Go语言的接口定义了一组方法签名,任何实现了这些方法的类型都被认为实现了该接口,这种动态绑定方式提供了灵活性。 8. **错误处理**:Go语言使用错误返回值来处理错误,而不是异常机制...

    go语言实战 中文 完整版 带书签

    同时,Go语言的接口(Interface)提供了一种强大的多态性实现,使代码更具灵活性和扩展性。 其次,Go语言的并发模型是其独特之处。书中详细介绍了goroutine和channel这两个核心概念。Goroutine可以理解为轻量级的...

Global site tag (gtag.js) - Google Analytics