Interfaz Go con bibliotecas C

¿Cómo se relaciona uno un programa Go con una biblioteca C?

He estado navegando en el código fuente de Go, pero todavía no lo he descubierto. Si alguien ya lo ha hecho, ¿podría compartir, por favor?

ACTUALIZADO: Gracias a @fserb, estoy publicando algunos documentos de las fuentes de Go:

Cgo permite la creación de paquetes Go que llaman código C

Uso: cgo [opciones del compilador] file.go

Las opciones del compilador se pasan sin ser interpretadas cuando se invoca a gcc para compilar las partes C del paquete.

El archivo input.go es un archivo de origen Go sintácticamente válido que importa el pseudo-paquete "C" y luego hace referencia a tipos como C.size_t, variables como C.stdout o funciones como C.putchar.

Si la importación de "C" está precedida inmediatamente por un comentario, ese comentario se utiliza como encabezado al compilar las partes C del paquete. Por ejemplo:

// #include <stdio.h>
// #include <errno.h>
import "C"

Cgo transforma el archivo de entrada en cuatro archivos de salida: dos archivos de origen Go, un archivo C para 6c (u 8c o 5c) y un archivo C para gcc.

Las reglas estándar de makefile del paquete en Make.pkg automatizan el proceso de uso de cgo. Consulte $ GOROOT / misc / cgo / stdio y $ GOROOT / misc / cgo / gmp para ver ejemplos.

Cgo aún no funciona con gccgo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta