package main import "fmt" /* 结构体值类型接收者和指针类型接收者实现结构体的区别 结构体的方法是值接收者,实例化后的结构体值类型和指针类型都可以赋值给接口变量 结构体的方法是指针接收者,实例化后的结构体指针类型才可以赋值给接口变量,值类型不能赋值给接口变量 */ type Animaler interface { setName(string) getName()string } type Dog struct { name string } func(d *Dog) setName(name string){ d.name=name } func(d Dog) getName()string{ return d.name } type Cat struct { name string } //指针类型的接收者 func(c *Cat) setName(name string){ c.name=name } func(c Cat) getName()string{ return c.name } func main() { d := &Dog{ name:"erha", } var d1 Animaler = d fmt.Println(d1.getName())//erha d1.setName("二哈") fmt.Println(d1.getName())//二哈 c := &Cat{ name:"miaomiao", } var c1 Animaler = c fmt.Println(c1.getName())//miaomiao c1.setName("喵喵") fmt.Println(c1.getName())//喵喵 }
package main import "fmt" /* 一个结构体实现多个接口 */ type Animaler1 interface { setName(string) getName()string } type Animaler2 interface { run(string) } 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 Animaler1 = d var d2 Animaler2 = d fmt.Println(d1.getName())//erha d1.setName("二哈") fmt.Println(d1.getName())//二哈 d2.run(d.name)//二哈 is running }
相关推荐
在类型系统上,Go语言支持接口(Interface),这是一种动态类型检查机制。通过接口,开发者可以实现面向切面编程,提高了代码的灵活性和可扩展性。此外,Go还提供了一种称为“反射”(Reflection)的功能,可以允许...
在io部分,作者讲解了Go语言中的io库,包括Interface、Text File、Binary File、Pipe、Encoding、Buffer、Temp、Path等内容。 在strings部分,作者讲解了Go语言中的strings库,包括strconv、strings、template、...
在Go语言中,接口是一种非常重要的特性,它与传统面向对象语言中的概念有所不同。Go语言没有类和继承,但它提供了接口来实现多态性。接口在Go语言中扮演着规范和契约的角色,允许不同类型的结构体共享相同的行为,即...
#### 一、Go语言接口基础 ##### 1.1 接口的定义与使用 在Go语言中,接口是一种特殊类型,它定义了一个方法集。一个类型如果实现了接口中定义的所有方法,则认为该类型实现了这个接口。这种隐式的实现方式使得Go...
2. **接口(Interface)**:Go语言的接口非常灵活,是实现面向切面编程和多态的关键。源码中会展示如何定义和使用接口,以及接口在类型系统中的作用。 3. **结构体和方法**:Go语言支持结构体和关联的方法,这对于...
2. **面向对象编程**:虽然Go语言不完全支持面向对象编程,但通过接口(interface)和结构体(struct)可以实现类似的功能,理解如何定义和使用接口是重要的。 3. **并发编程**:Go语言的并发特性主要通过...
5. **接口(Interface)**:Go语言的接口是一种类型规范,通过接口可以实现多态。 三、Go语言的控制流程 1. **条件语句**:包括`if`、`else if`和`else`,支持短路逻辑。 2. **循环语句**:包括`for`、`while`...
2. **接口(Interface)**:Go语言的接口是一种类型抽象,它定义了一组方法签名。任何实现了接口所定义方法的类型都被称为实现了该接口。这种鸭子类型的实现方式让Go语言具有了高度的灵活性和可扩展性。 3. **...
此外,Go语言的接口(interface)类型也提供了灵活的多态性。 6. 社区支持与学习资源 文档中感谢名单上列出了许多Go语言社区成员,这些名字来自于对原版书籍的贡献者和对中文翻译本提供帮助的朋友们。这反映了Go...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。这个“go语言学习例子”压缩包包含了一系列的Go语言源代码文件,旨在帮助初学者更好地理解和掌握Go语言的...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它旨在提高程序员的生产效率和系统的可扩展性,特别适合构建大规模的网络服务和分布式系统。本资料包是...
- **接口(interface)**:Go语言的接口定义了一组方法签名,实现该接口意味着实现了这些方法。 4. **并发编程** - **goroutine**:轻量级线程,实现高并发处理,用`go`关键字启动。 - **channel**:用于...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收式的、具有C风格的编程语言。它的设计目标是提高编程效率,简化多线程编程,以及优化网络和系统服务的开发。下面将详细讨论Go...
在 Go 语言中,接口(Interface)是一种强大的抽象机制,它允许我们定义一组方法签名,任何类型只要实现了这些方法即可被视为实现了该接口。接口的这种特性使得 Go 语言具有高度的灵活性和可扩展性,是实现面向接口...
- **接口(Interface)**:Go语言的接口提供了一种抽象能力,通过接口可以实现面向接口编程,增强代码的灵活性。 - **类型系统**:Go语言支持结构体和指针,还拥有内置类型以及用户自定义类型,类型系统严谨且灵活...
在Go语言中,接口(Interface)是一种非常重要的概念,它定义了一组方法的集合。与许多其他面向对象的语言不同,在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...
2. **接口(Interface)**:Go语言的接口设计十分灵活,它是一种动态类型检查机制。通过接口,我们可以实现多态性,编写出更加通用和可复用的代码。理解接口的工作原理,以及如何利用接口进行设计模式的实现,对于...
同时,Go语言的接口(Interface)提供了一种强大的多态性实现,使代码更具灵活性和扩展性。 其次,Go语言的并发模型是其独特之处。书中详细介绍了goroutine和channel这两个核心概念。Goroutine可以理解为轻量级的...
3. **接口(Interface)**:Go语言的接口是一种抽象类型,它定义了一组方法签名。实现接口意味着实现这些方法。接口在多态和设计模式中扮演着关键角色。 4. **并发编程**:Go语言通过`goroutine`和`channel`提供了...