Недавно я задал этот вопрос https://softwareengineering.stackexchange.com/info/129076/go-instead-of-c-c-with-cgo и получил очень интересный ввод. Однако есть ошибка в моем вопросе: я предположил, что cgo также может использоваться для доступа к С++-коду, но это невозможно. Вместо этого вам нужно использовать SWIG.
The go faq говорит: "Программа cgo предоставляет механизм для" интерфейса внешних функций ", позволяющий безопасный вызов библиотек C из кода Go. SWIG расширяет эту возможность до библиотек С++".
мой вопрос: Возможно ли получить доступ к высокоуровневым фреймворкам С++, таким как QT, с помощью SWIG + Go и получить производительность? Я хотел бы использовать Go как "язык сценариев" для использования библиотек С++.
Есть ли у вас опыт работы с go и swig? Есть ли подводные камни, о которых я должен знать?
Обновление/ответ. Я тоже спросил об этом в IRC, и я думаю, что вопрос решен:
SWIG - довольно чистый способ взаимодействия кода С++ с другими языками. К сожалению, сопоставление типов С++ с чем-то вроде go может быть очень сложным, и в большинстве случаев вы должны сами указывать отображение. Это означает, что SWIG - это хороший способ использовать существующую кодовую базу для повторного использования уже написанных алгоритмов. Однако сопоставление библиотеки, такой как Qt, приведет вас к возрасту. Разумеется, это возможно, но вы не хотите этого делать.
Те из вас, кто пришел сюда для программирования gui с помощью go, могут захотеть попробовать go-gtk или версию wxWidgets go.