go语言接口使用
来源:互联网 发布:js求二维数组的最大值 编辑:程序博客网 时间:2024/04/30 08:28
http://blog.csdn.net/love_se/article/details/7947440
下面为大家带来go语言三种接口使用模式,代码基于go1.0.2版本
第一种:
- 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后面的{}是初始化时啥也没传
- 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)
- }
第三种:
- 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)
- }
- go语言接口使用
- go语言接口使用
- Go语言的接口
- Go 语言接口
- Go语言-接口
- go语言接口赋值
- Go语言接口
- Go语言-接口
- go语言接口
- Go语言接口
- Go语言接口interface
- GO语言接口
- Go语言学习笔记---接口
- go语言类型和接口
- go语言学习-接口(interface)
- go语言学习-接口赋值
- Go语言_接口赋值
- Go语言_接口查询
- LA3983 Robotruck (单调队列优化DP)
- 空指针、NULL指针、零指针
- android获取屏幕尺寸、密度(判断手机屏幕类型)
- Android 监听home键,及软键盘的弹起和关闭
- ubuntu下卸载软件(两种方法)
- go语言接口使用
- J2EE项目开发流程
- android4.0系统旋转270度的方法
- 欢迎报名参加CSDN云计算俱乐部上海“hadoop技术开发与应用实践分享会”
- UVa:10465 Homer Simpson
- ccomBox控件
- 已知一指针p,你可以确定该指针是否指向一个有效的对象吗?如果可以,如何确定?如果不可以,请说明原因。
- 使用JS实现JQuery的document.ready功能
- php截取中文字符串