@gkozyrev

Golang не запускает main()?

Пишу небольшой сервер для получения адресов микросервисов.
Сервер состоит из нескольких директорий, которые импортируются, а так же основных файлов main.go и server.go

main.go:
package main

import (
	"fmt"
)

const (
	port = ":7777"
)

func main() {
	fmt.Println("Starting Servers")
	serve()
}


server.go:

package main

import (
	"./data_storage"
	pb "./proto"
	"./platform"
	"./user"
	"fmt"
	"google.golang.org/grpc"
	"log"
	"net"
)

func serve() {
	lis, err := net.Listen("tcp", port)
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}
	s := grpc.NewServer()

	// ----- User -----
	fmt.Println("\nRegistering User Address Server")
	pb.RegisterUserStackServer(s, &user.Server{})

	// ----- Platform -----
	fmt.Println("\nRegistering Platform Address Server")
	pb.RegisterPlatformStackServer(s, &platform.Server{})

	// ----- DataStorage -----
	fmt.Println("\nRegistering DataStorage Address Server")
	pb.RegisterDataStorageStackServer(s, &data_storage.Server{})

	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}


Суть вопроса:
Согласно принципам работы Golang первой в любом случает запускается функция main() внутри файла main.go. Так вот если я запускаю просто go run main.go или go build main.go, то main() пытается запуститься и дает какой-то вывод.

Но когда я начинаю через go build собирать весь сервер или в надежде увидеть какой-то вывод в виде ошибки запускаю ggo run main.go server.go, на выходе получаю ничего: ни принтов, которые идут самой первой строчке, ни ошибок, все вроде бы запущено, но признаков жизни никаких нет.

В чем может быть проблема? Может, я что-то не понимаю?
Заранее спасибо всем!
  • Вопрос задан
  • 1010 просмотров
Решения вопроса 1
@gkozyrev Автор вопроса
Обнаружил, что если просто исправить определенные косяки в коде, то все начинает работать)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bitniks
@bitniks
Go/PHP/Symfony developer
go run компилирует и запускает программу https://golang.org/cmd/go/#hdr-Compile_and_run_Go_...
go build только компилирует https://golang.org/cmd/go/#hdr-Compile_and_run_Go_... Затем скомпилированную программу можно запустить как обычный исполняемый файл

Когда вы запускаете go run main.go или go build main.go, вы получаете то, что вам нужно. В первом случае будет компиляция и запуск, во втором только компиляция
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы