Подключение к GRPC server’у Simple server Создание сервера type server struct { productMap map[string]*pb.Product ecommerce.UnimplementedProductInfoServer } const ( port = ":50051" ) func main() { lis, err := net.Listen("tcp", port) if err != nil { log.Fatal(err) } s := grpc.NewServer() ecommerce.RegisterProductInfoServer(s, &server{}) log.Printf("Starting gRPC listener on port %s", port) if err := s.Serve(lis); err != nil { log.Fatalf("failed serve: %v", err) } } Создание клиента package main import ( "context" "log" "time" "client/ecommerce" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) const ( address = "localhost:50051" ) func main() { conn, err := grpc.Dial(address, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Fatal(err) } defer conn.Close() c := ecommerce.NewProductInfoClient(conn) name := "Apple iPhone 11" description := "Some phone" ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() r, err := c.AddProduct(ctx, &ecommerce.Product{Name: name, Description: description}) if err != nil { log.Fatal(err) } log.Printf("Product ID: %s added successfully", r.Value) product, err := c.GetProduct(ctx, &ecommerce.ProductID{Value: r.Value}) if err != nil { log.Fatal(err) } log.Printf("Product: %s", product.String()) } Tinkoff OpenAPI conn, err := grpc.Dial("invest-public-api.tinkoff.ru:443", grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})), grpc.WithPerRPCCredentials(oauth.TokenSource{ TokenSource: oauth2.StaticTokenSource(&oauth2.Token{ AccessToken: "token", }), })) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() После чего объект conn можно передавать в функции создание новых сервисов.