package main import "fmt" /* 1. 在golang中接口是一种抽象类型,接口是一组函数的集合,golang中的接口不能包含任何变量 2. golang接口中所有的方法都没有方法体,只定义规范不实现。接口体现了程序设计的多态和高内聚低耦合的思想 */ //定义接口 type Usber interface { start() stop() } //如果接口里面有方法,必须通过结构体或者通过自定义类型实现接口,结构体必须实现接口里的所有方法 type Phone struct { name string } //结构体实现接口的方法 func(p Phone) start(){ fmt.Println(p.name,"start") } func(p Phone) stop(){ fmt.Println(p.name,"close") } func main() { p := Phone{ name : "iphone", } var p1 Usber p1=p p1.start() //iphone start p1.stop() //iphone close }
package main import "fmt" /* golang中的接口可以不定义任何方法,没定义任何方法的接口就是空接口,空接口表示 没有任何约束,因此任何类型变量都可以实现空接口 */ //空接口 type A interface { } //空接口当作函数的参数,接收任何类型 func show(a interface{}){ fmt.Printf("值:%v,类型:%T\n", a, a) } //定义一个方法,可以传入任意数据类型,然后根据不同的类型实现不同的功能(通过断言实现) func myPrint(x interface{}){ switch x.(type) { case int: fmt.Println("int") case string: fmt.Println("string") default: fmt.Println("error") } } func main() { show(20) //值:20,类型:int slice := []int{1,2, 3,4} show(slice) //值:[1 2 3 4],类型:[]int //map类型的值必须是字符串 var mp = make(map[string]string) mp["name"] ="lft" mp["age"]="18" fmt.Println(mp) //map[name:lft age:18] //通过空接口实现map类型的值可以是任何类型 var mp1 = make(map[string]interface{}) mp1["name"] ="lft" mp1["age"]=18 fmt.Println(mp) //map[name:lft age:18] //通过空接口实现切片里的内容可以是任何类型 var slice1 = []interface{}{1,2,"lft"} fmt.Println(slice1) //[1 2 lft] //如果想要判断空接口中值的类型,可以使用断言 var b interface{} b=10 v,ok := b.(int) // 断言语法 if ok{ fmt.Println("a就是一个int类型,值是:", v) }else{ fmt.Println("assert fail") } myPrint(10) //int }
相关推荐
在类型系统上,Go语言支持接口(Interface),这是一种动态类型检查机制。通过接口,开发者可以实现面向切面编程,提高了代码的灵活性和可扩展性。此外,Go还提供了一种称为“反射”(Reflection)的功能,可以允许...
Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分:Go语言基础、标准库和扩展库...
在Go语言中,接口是一种非常重要的特性,它与传统面向对象语言中的概念有所不同。Go语言没有类和继承,但它提供了接口来实现多态性。接口在Go语言中扮演着规范和契约的角色,允许不同类型的结构体共享相同的行为,即...
#### 一、Go语言接口基础 ##### 1.1 接口的定义与使用 在Go语言中,接口是一种特殊类型,它定义了一个方法集。一个类型如果实现了接口中定义的所有方法,则认为该类型实现了这个接口。这种隐式的实现方式使得Go...
在本资源包中,我们关注的是"Go语言项目实战源码资料",这是一份针对Go(也称为Golang)编程语言的实践性学习材料,特别适用于那些希望通过实际项目提升Go语言技能的开发者。"Go语言项目实战-up视频源码"意味着这份...
2. **接口(Interface)**:Go语言的接口非常灵活,是实现面向切面编程和多态的关键。源码中会展示如何定义和使用接口,以及接口在类型系统中的作用。 3. **结构体和方法**:Go语言支持结构体和关联的方法,这对于...
5. **接口(Interface)**:Go语言的接口是一种类型规范,通过接口可以实现多态。 三、Go语言的控制流程 1. **条件语句**:包括`if`、`else if`和`else`,支持短路逻辑。 2. **循环语句**:包括`for`、`while`...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。这个“go语言学习例子”压缩包包含了一系列的Go语言源代码文件,旨在帮助初学者更好地理解和掌握Go语言的...
2. **接口(Interface)**:Go语言的接口是一种类型抽象,它定义了一组方法签名。任何实现了接口所定义方法的类型都被称为实现了该接口。这种鸭子类型的实现方式让Go语言具有了高度的灵活性和可扩展性。 3. **...
* 关键字:Go语言共有25个关键字或保留字,例如break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for...
- **接口(interface)**:Go语言的接口定义了一组方法签名,实现该接口意味着实现了这些方法。 4. **并发编程** - **goroutine**:轻量级线程,实现高并发处理,用`go`关键字启动。 - **channel**:用于...
此外,Go语言的接口(interface)类型也提供了灵活的多态性。 6. 社区支持与学习资源 文档中感谢名单上列出了许多Go语言社区成员,这些名字来自于对原版书籍的贡献者和对中文翻译本提供帮助的朋友们。这反映了Go...
- **接口(Interface)**:Go语言的接口提供了一种抽象能力,通过接口可以实现面向接口编程,增强代码的灵活性。 - **类型系统**:Go语言支持结构体和指针,还拥有内置类型以及用户自定义类型,类型系统严谨且灵活...
在 Go 语言中,接口(Interface)是一种强大的抽象机制,它允许我们定义一组方法签名,任何类型只要实现了这些方法即可被视为实现了该接口。接口的这种特性使得 Go 语言具有高度的灵活性和可扩展性,是实现面向接口...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收式的、具有C风格的编程语言。它的设计目标是提高编程效率,简化多线程编程,以及优化网络和系统服务的开发。下面将详细讨论Go...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它旨在提高程序员的生产效率和系统的可扩展性,特别适合构建大规模的网络服务和分布式系统。本资料包是...
3. **接口(Interface)**:Go语言的接口是一种抽象类型,它定义了一组方法签名。实现接口意味着实现这些方法。接口在多态和设计模式中扮演着关键角色。 4. **并发编程**:Go语言通过`goroutine`和`channel`提供了...
在Go语言中,接口(Interface)是一个非常重要的概念,它为程序设计提供了多态性,使得不同类型的结构体或自定义类型能够通过实现相同的一组方法来满足同一个接口的要求。在Go语言中,多态性并不是通过传统的面向...
在Go语言中,接口(Interface)是一种非常重要的概念,它定义了一组方法的集合。与许多其他面向对象的语言不同,在Go语言中,一个类型(无论是自定义类型还是内建类型)如果实现了某个接口所指定的所有方法,则认为...
同时,Go语言的接口(Interface)提供了一种强大的多态性实现,使代码更具灵活性和扩展性。 其次,Go语言的并发模型是其独特之处。书中详细介绍了goroutine和channel这两个核心概念。Goroutine可以理解为轻量级的...