Использование Golang объекта пакета (.a файл) - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь понять команду go install для пакетов. Я использовал команду go install для установки моего пакета, и я хочу попробовать использовать его. Допустим, исходный пакет имел каталог "github.com/abc/greeting", поэтому мы можем вызвать метод с помощью

package main

import "github.com/abc/greeting"

func main() {
    greeting.Greet()
}

Когда я использую "go install" для пакета приветствия, он создает "reeting.a "в каталоге" $ GOPATH / pkg / $ ARCH / github.com / ab c ".

Как использовать этот объект скомпилированного пакета в моем коде?

1 Ответ

0 голосов
/ 27 января 2020

Как использовать этот объект скомпилированного пакета в моем коде?

Как ответ @JimB, нет, вы не можете сделать что-то подобное. Однако вы можете использовать go плагин API для достижения аналогичного результата.

В плагине go пакет будет скомпилирован как так называемый плагин файл с расширением .so. Затем из основного пакета вы можете открыть конкретный плагин и найти функцию. Пример:

p, err := plugin.Open("greeting.so")
if err != nil {
    panic(err)
}
greetFunc, err := p.Lookup("Greet")
if err != nil {
    panic(err)
}

greetFunc.(func())() // call the Greet function

Кроме того, у go было нечто, называемое Двоичный пакет , однако, похоже, API скоро будет удален https://github.com/golang/go/issues/28152

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...