Я довольно новичок в Go и упал на цикл импорта, который я не знаю, как мне решить. У меня есть несколько классов, которые реализуют определенный интерфейс. У меня также есть другой класс, который будет возвращать интерфейс, соответствующий конкретному идентификатору класса. Проблема приходит, когда какой-то конкретный класс должен использовать мой другой класс. Вот пример:
package examplepkg
import otherpkg
type ExampleClass {}
func NewExampleClass() *ExampleClass {
return &ExampleClass{}
}
func (ex *ExampleClass) ExampleMethod() { // Implements ExampleInterface
var id int // Read from some external source
theinterface := otherpkg.GetExampleInterface(id)
theinterface.ExampleMethod()
}
И функция в другом пакете:
package otherpkg
import examplepkg
func GetExampleInterface(id int) *ExampleInterface {
switch id {
case 3000: return examplepkg.NewExampleClass()
}
}
Если вам нужно немного контекста, я читаю некоторые данные из источника, который я не создал, который инкапсулирует некоторые типы данных с помощью идентификаторов. Примером будет: id somedata id2 somedata2. И используя конкретный идентификатор, я могу вызвать метод, чтобы получить хороший тип данных и хороший размер. Они могут быть вложенными, поэтому я использую тот же метод ExampleMethod ().
Может ли кто-нибудь помочь мне ясно понять эту проблему в Go?