Sorry for the very late reply to this question. Yes, this is possible in Go by providing a custom dialer to grpc:
It would look something like:
myDialer := net.Dialer{LocalAddr: <your network interface address info here>}
client, err := grpc.Dial(target, <other options>,
grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) {
return myDialer.DialContext(ctx, "tcp", addr)
})