GO开发:接口

 Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。

type example interface{         Method1(参数列表) 返回值列表         Method2(参数列表) 返回值列表         …         var a example         a.Method1() }

interface类型默认是一个指针

接口实现:

a. Golang中的接口,不需要显示的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。因此,golang中没有implement类似的关键字

b. 如果一个变量含有了多个interface类型的方法,那么这个变量就实现了多个接口。

c.如果一个变量只含有了1个interface的方部分方法,那么这个变量没有实现这个接口。

接口嵌套

一个接口可以嵌套在另外的接口,如下所示

 type ReadWrite interface {                Read(b Buffer) bool                Write(b Buffer) bool }  type Lock interface {                Lock()                Unlock()  }  type File interface {                ReadWrite                Lock                 Close()  } 

实例:

package main  import "fmt"  type Reader interface {    Read() }  type Writer interface {    Write() }  type ReadWriter interface {    Reader    Writer }  type File struct { }  func (f *File) Read() {    fmt.Println("read data") }  func (f *File) Write() {    fmt.Println("write data") }  func Test(rw ReadWriter) {    rw.Read()    rw.Write() }  func main() {    var f *File    Test(f)     var b interface{}    b = f    v, ok := b.(ReadWriter)    fmt.Println(v, ok) }

类型断言

由于接口是一般类型,不知道具体类型,如果要转成具体类型,可以采用以下方法进行转换:

/* var t int var x interface{} x = t y = x.(int)   //转成int  
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信