In my package main, I have:
type InfoToSend struct {
id string
field1 string
field2 string
}
and I call a method send:
err = rpc.SendValue(toSend.id, toSend.field1, toSend.field2)
I would like to refactor it to:
err = rpc.SendValue(toSend)
But in the rpc
package, I cannot access the main.InfoToSend struct.
func SendValue(info InfoToSend) error {
...
}
What can do about it ?
Let's look at this logically. What domain does this belong to:
type InfoToSend struct {
id string
field1 string
field2 string
}
Does it belong to main
, or rpc
. It's info to be sent, hence its name InfoToSend
. Over what is this info going to be sent? Well, it's part of a remote procedure call it seems. Common sense would place this type in the rpc
package, then, surely.
The solution, then, is simple, move the type to the rpc
package and export the type + fields:
type InfoToSend struct {
ID string
Field1 string
Field2 string
}
Then, from your main package, simply write this in your main
package:
err := rpc.SendValue(InfoToSend{
ID: "id",
Field1: "field 1 value",
Field2: "field 2 value",
})
Job done.