`

go语言接口interface(一)

    博客分类:
  • Go
阅读更多
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语言中的interface使用实例,go语言中的interface是一组未实现的方法的集合,如果某个对象实现了接口中的所有方法,那么此对象就实现了此接口,需要的朋友可以参考下

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

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

    go语言接口用法实例分析

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

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

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

    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编程语言的一些常见基础面试题.pdf

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

    Go语言接口用法实例

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

    无闻Go语言视频教程

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

    Go 语言接口

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

    go-interface-examples

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

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

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

    聊一聊Go语言的error处理

    这一次尝试通过Go内置的error接口,聊一聊Go语言的错误处理以及Error的惯例用法。 Error接口 接口签名 type error interface { Error() string } 我们先看Go的src/builtin内置error接口,它只有一个Error()方法,...

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

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

    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语言实战六 接口

    如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定 义的类型的值就可以赋给这个接口类型的值 package main import fmt type notifier interface { notify() } type student struct { name ...

Global site tag (gtag.js) - Google Analytics