您的位置:首页 > 编程语言 > Go语言

go语言接口使用

2013-09-02 14:40 691 查看
/article/8490005.html

下面为大家带来go语言三种接口使用模式,代码基于go1.0.2版本

第一种:

[java] view
plaincopyprint?

package main

import "fmt"

type Writer interface {

Write(data []byte) (int, error)

}

type writerImpl struct {

}

func (w *writerImpl) Write(data []byte) (int, error) {

return len(data), nil

}

type Worker struct {

Writer

}

func main() {

worker := Worker{&writerImpl{}}

// using by inteface

n, err := worker.Write(nil)

if err != nil {

panic(err)

}

fmt.Println(n)

}

注意,上面的 worker := Worker{&writerImpl{}} 很难理解,这里不是对一个类型取地址,而是用writerImpl生成一个
匿名对象,并对这个匿名对象取地址,writerImpl后面的{}是初始化时啥也没传

第二种:

[java] view
plaincopyprint?

package main

import "fmt"

type Writer interface {

Write(data []byte) (int, error)

}

func New() Writer {

return &writer{}

}

type writer struct {

}

func (w *writer) Write(data []byte) (int, error) {

return len(data), nil

}

func main() {

worker := New()

// using by inteface

n, err := worker.Write(nil)

if err != nil {

panic(err)

}

fmt.Println(n)

}

第三种:

[java] view
plaincopyprint?

package main

import "fmt"

type Writer interface {

Write(data []byte) (int, error)

}

func New() *writer {

return &writer{}

}

type writer struct {

}

func (w *writer) Write(data []byte) (int, error) {

return len(data), nil

}

func main() {

worker := New()

// using by inteface

n, err := worker.Write(nil)

if err != nil {

panic(err)

}

fmt.Println(n)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: