I'm sorry, this will never work. A signal handler can only call async-signal-safe functions. Go code will never be async-signal-safe. That would be nearly impossible to implement, and it is not a goal.
I recommend that you open a pipe, read from the pipe on the Go side, and in the signal handler write a byte to the pipe. The write call is async-signal-safe.