Я столкнулся с небольшой икотой при попытке объединить поддержку GTK3 в < href="https://github.com/agl/go-gtk" rel="nofollow">вилка go-gtk, используемая пруд с вышестоящим go-gtk на основе GTK2 .
Эти строки cgo pkg-config, которые определяют версию GTK, должны фактически появляться в каждом файле, что предотвращает существование привязок, общих для GTK 2 и 3, в общем файле.
Я полагаю, что «идиоматический» хак для компиляции файла с несколькими версиями GTK: поместите общий код в файл foo_common.go, чтобы он никогда не собирался. Используйте скрипт perl или bash + sed для сборки foo2.go и foo3.go из foo_common.go, исправив строки cgo pkg-config и добавив директивы go build для тега gtk2.