如何在Golang中嵌套接口

  介绍

今天就跟大家聊聊有关如何在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中嵌套接口