Go, Kernel, Unsafe, Golang.
convert it to unsafe pointer again and then reconvert it to the C message_t pointer and pass it as an argument to the C receiver method. A very important thing to remember here is that msgGo is a Go pointer and becomes a candidate for garbage collection. But since we are passing that value to the C