github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/filter/version/version.go (about)

     1  // Package version provides a way of calling a version of a service
     2  package version
     3  
     4  import (
     5  	"github.com/micro/go-micro/v2/client"
     6  	"github.com/micro/go-micro/v2/client/selector"
     7  	"github.com/micro/go-micro/v2/registry"
     8  )
     9  
    10  // Filter will filter the version of the service
    11  func Filter(v string) client.CallOption {
    12  	filter := func(services []*registry.Service) []*registry.Service {
    13  		var filtered []*registry.Service
    14  
    15  		for _, service := range services {
    16  			if service.Version == v {
    17  				filtered = append(filtered, service)
    18  			}
    19  		}
    20  
    21  		return filtered
    22  	}
    23  
    24  	return client.WithSelectOption(selector.WithFilter(filter))
    25  }