這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
下面為大家帶來go語言三種介面使用模式,代碼基於go1.0.2版本
第一種:
package mainimport "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 intefacen, err := worker.Write(nil)if err != nil {panic(err)}fmt.Println(n)}
第二種:
package mainimport "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 intefacen, err := worker.Write(nil)if err != nil {panic(err)}fmt.Println(n)}
第三種:
package mainimport "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 intefacen, err := worker.Write(nil)if err != nil {panic(err)}fmt.Println(n)}