Есть некий пакет:
ext_api.go
package ext_api
type Data struct {
a string
b int
}
func Create() Data {
d := Data{"text", 10}
return d
}
func (d *Data) PrintData() {
println(d.a)
}
И его использование:
package main
import "ext_api"
func main() {
data := ext_api.Create()
data.PrintData()
}
Хочется как-то написать свою функцию, например
func (d *Data) PrintDataEx() {
println(d.a, " ", d.b)
}
Если её попробовать добавить в основной пакет то получим
"cannot define new methods on non-local type ext_api.Data"
Что, наверное, логично.
Но если добавить свой файл в каталог этого пакета с указанием имени пакета package ext_api, то всё заведется и заработает, но это же явно неправильно.
Как бы сделать что-то между этими решениями. Отдельный файл но лежащий за пределами стороннего пакета...