介绍
今天就跟大家聊聊有关如何在Golang中嵌套接口,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
什么是Golang
Golang是谷歌开发的一种静态强类型,编译型,并发型,并具有垃圾回收功能的编程语言,其语法与C语言相近,但并不包括如枚举,异常处理,继承,泛型、断言,虚函数等功能。
package main import ( ,,,“fmt" ), , func main (), { ,,,s :=, map [string]接口{}{ ,,,,,,,“code": 0, ,,,,,,,“msg":““, ,,,,,,,“data": map [string]接口{}{ ,,,,,,,,,,,“src":““, ,,,,,,,}, ,,,} , ,,,(“data")。(map [string]接口{})(“src"),=,“abc",,,,,,,,,,,//,修改一个属性,类型转换为map [string]接口{} ,,,(“data")。(map [string]接口{})(“new"),=,“bbb",,,,,,,,,,,//,新增一个属性 ,,,fmt.Println (s) }
<>强补充:Golang界面赋值与取值的实例强>
大家还是直接看代码吧~
bs :=, (map [string]字符串) bs (“name"),=,“张三“; bs (“age"),,=,“12”; var student 界面{} student =b a :=学生。(map [string]字符串),,,//将接口转换为地图类型,如果不确定数据类型的时候可以使用类型断言,确定其类型之后再转换为相对应的类型,然后取的值 fmt.Printf(“学生的姓名是:,\ n % v",,一个[“name"]),,,//结果:,张三 fmt.Printf(“学生的数据是:,\ n % v",,学生)
<强>补充:去语言学习——接口赋值的两种类型强>
接口赋值在去语言中分为下面两种情况:
1,将对象实例赋值给接口
在我看来走语言的接口就是c++中虚函数的声明,使用者可以根据自身使用的需要声明一个函数的集合,将需要的方法都在接口中声明,有点像c++中,子类继承父类之后,通过子类对象给父类赋值,因为父类有的方法(除私有方法)子类肯定都有,尤其是虚函数,这样比c++好的地方是去语言中不需要通过继承的方式来实现多态,不同的对象只需要将接口中的所有方法都实现即可,本质上和c++一样,实现这些接口的对象相当于子类,这个接口相当于父类,不同的地方去语言中少了继承的过程,耦合度更低。
将一个接口赋值给另一个接口(同理)
2,将对象实例赋值给接口
这要求该对象实例实现了所有该接口提供的方法,下面是代码实例:
package 主要 import ( ,“fmt" ) type Integer  int 少func (a 整数)(b 整数),bool { return a第二种方法通过一个接口给另一个接口赋值,在去语言中只要两个接口拥有同样的方法列表(次序不同不要紧),那么他们就是等同的,可以相互赋值
package 一个 {type ReadWriter 接口 ,阅读(buf []字节)(n int, err 错误) ,写(buf []字节)(n int, err 错误) } package 两个 {type Istream 接口 ,阅读(buf []字节)(n int, err 错误) ,写(buf []字节)(n int, err 错误) } var file1  one.ReadWriter =,新(文件) var file2 two.Istream =file1 时间=var file3  one.ReadWriter file2在去语言中,这两个接口是等价的,因为:
1,任何实现了one.ReadWriter接口的类,均实现了two.ReadWriter
2,任何one.ReadWriter的接口可以赋值给two.ReadWriter,反之亦然
如何在Golang中嵌套接口