Реализация интерфейса из другого пакета (обратный вызов из другого модуля)

Kim Ericko спросил: 03 ноября 2018 в 08:48 в: node.js

В NodeJS я могу объявить обратный вызов в одном месте и использовать его в одном месте, чтобы избежать нарушения структуры проекта.

A.js

module.exports = class A(){
    constructor(name, callback){
        this.name = name;
        this.callback = callback;
    }
    doSomeThingWithName(name){
        this.name = name;
        if(this.callback){
            this.callback();
        }
    }
}

B.js

const A = require(./A);
newA = new A("KimKim", ()=> console.log("Say Oyeah!"));

В Go я также хочу сделать то же самое с интерфейсом и реализацией.

A.go

type canDoSomething interface {
    DoSomething()
}
type AStruct struct {
    name string
    callback canDoSomething
}
func (a *AStruct) DoSomeThingWithName(name string){
    a.name = name;
    a.callback.DoSomething()
}

B.go

import (A);
newA = A{}
newA.DoSomeThingWithName("KimKim");

Можно ли перезаписать логику для функций интерфейса в файле B.go? Как я могу сделать их эквивалентными стилю NodeJS?

Я пытаюсь

import (A);
newA = A{}// I want
//newA.callback.DoSomething = func(){}...
// or
// func (a *AStruct) DoSomething(){}...
// :/
newA.DoSomeThingWithName("KimKim");

0 ответов