Динамический ипорт или как вызвать функцию из пакета не зная название пакета

Вопрос следующий, недавно начал изучать Go, столкнулся с такой проблемой В пхп это реализуется следующим образом

$db['class_name'] = 'ClassA'; // например получили название класса из бд

$classes = ['ClassA', 'ClassB']; // массив доступных классов

$object = new $classes[$db['class_name']] // создаем нужный класс

В Go нашел только одно решение (использование плагинов), но к сожалению они работают только под Linux

Например код:

package company_one

import "fmt"

type CompanyOne struct{}

func (company *CompanyOne) Init() {
    fmt.Println("Hello CompanyOne")
}
package company_two

import "fmt"

type CompanyTwo struct{}

func (company *CompanyTwo) Init() {
    fmt.Println("Hello CompanyTwo")
}
package main

import (
    "strings"
    _ "company_one"
    _ "company_two"
)

func main() {
   //data["CLIENT"] приходит или company_one или company_two, в зависимости от клиента
   client_name := strings.ToLower(data["CLIENT"].(string))
   client_name.Init()
}

как мне вызвать функцию из пакета?


Ответы (0 шт):