I have 2 packages, one runs the main program('A' or 'core'), the other is a 
remote program that can send to the main program('B' or 'remote').

in A: 

type SendFn func(string, interface{}) error

var (
    send        SendFn
    NoSendError = xrr.Xrror("Send is not initialized!")
)

func Send(from string, data interface{}) error {
    if send != nil {
        return send(from, data)
    }
    return NoSendError
}

in B:

var sfn core.SendFn

func init() {
    sfn = core.Send
}

func main() {
    err := sfn("remote", "helloworld")
    if err != nil {
        os.Stdout.WriteString(err.Error())
        os.Stdout.WriteString("\n")
        os.Exit(-1)
    }
    os.Exit(0)
}


So I run A, which defines 'send' as part of an initialization, then run B 
but this always returns NoSendError, presumably because B gets package A 
before 'send' is initialized where the hope here was that I could just pull 
'Send' in and have it work.

I've done something similar using Unix sockets buts it lot more code than I 
want to do here and I thought I could work out a simpler process. How would 
this work? Probably some channel of sorts but I am uncertain right now.



-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to