Вы не можете. На самом деле, вы не можете делать что-либо с этим типом с cgo из-за правил передачи указателей , которые позволяют cgo безопасно работать с Go параллелизмом и сборщиком мусора. Карты находятся в списке типов, которые «всегда включают Go указатели», и поэтому карты не могут быть переданы в качестве аргументов C функциям, возвращены из Go функций, которые вызываются кодом C, или сохранены C.
Трудно дать рекомендацию о том, что вы должны сделать, не видя больше того, что вы пытаетесь выполнить sh, но обычный обходной путь для этого чтобы код Go содержал объекты на карте и передавал код C key с этой карты (например, строку C или int, которые можно передавать или хранить свободно) как дескриптор объекта, содержащегося внутри. C затем выполняет все свое взаимодействие с объектами с помощью функций Go, которые могут использовать клавишу, чтобы найти правильное значение на карте. Срез тоже подойдет.