Стоит задача, сделать в Go такую структуру, одним из свойств которой, был бы массив или карта, с указателями на методы (т.е функции, исполняемые именно в контексте экземпляра структуры). А так же был бы метод, вызывая который и передавая в него идентификатор массива (карты) можно было бы вызвать метод, который мог бы работать со свойствами
Язык для меня новый, нагуглить не смог совсем.
Для примера, тоже самое, но на JavaScript
class Test {
constructor() {
this._a = 0;
this._b = 0;
// Список указателей на методы
this._fn = new Map();
this._fn.set(0x00, this._add);
this._fn.set(0x01, this._sub);
}
init(a, b) {
this._a = a;
this._b = b;
}
_add() {
return this._a + this._b;
}
_sub() {
return this._a - this._b;
}
call(fnID) {
const fn = this._fn.get(fnID);
if (!fn) {
throw new Error('Bad function ID');
}
return fn.apply(this);
}
}
const t = new Test();
t.init(2, 5)
console.log(t.call(0x00), t.call(0x01));
// Результат выполнения: 7 -3