Golang如何給import對象賦予新方法 (cannot define new methods on non-local type xxx)

舉例:

假如我從某庫engine中得到該庫中定義的對象Request,我現在想賦予它新的方法,採用以下方式是不被允許的。

import (
	"github.com/slpslpslp/crawler/engine"
)

func (req *engine.Request) myselfMethod() {
//	do something
}

解決方法:

1. 新類型

type newRequest engine.Request

func (req newRequest) myselfMethod() {
	//	do something
}

2. 嵌入(推薦),見官方embedding方式

type newRequest struct {
	*engine.Request
}

func (req newRequest) myselfMethod() {
	//	do something
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章