func NewContext(ctx context.Context, s Service) context.Context {
	return context.WithValue(ctx, serviceKey{}, s)
}
NewContext returns a new Context with the Service embedded within it.
package micro
import (
	"context"
	"go-micro.dev/v4/client"
	"go-micro.dev/v4/server"
)
type serviceKey struct{}
type Service interface {
	Name() string
	Init(...Option)
	Options() Options
	Client() client.Client
	Server() server.Server
	Run() error
	String() string
}
type Function interface {
	Service
	Done() error
	Handle(v interface{}) error
	Subscribe(topic string, v interface{}) error
}
type Event interface {
	Publish(ctx context.Context, msg interface{}, opts ...client.PublishOption) error
}
type Publisher = Event
type Option func(*Options)
func NewService(opts ...Option) Service {
	return newService(opts...)
}
func FromContext(ctx context.Context) (Service, bool) {
	s, ok := ctx.Value(serviceKey{}).(Service)
	return s, ok
}