Я хочу запустить мою программу go из cmd следующим образом:
C:\go\awesomeProject> goprogramm.exe -generate -val=2
и хочу получить такую обратную связь:
> Process started
> Something went wrong. Type e-mail to receive report:
> |...
Да, много гуглил. Стандартный вывод, go exec'ing, каналы и т. д. Просто не могу перепутать.





Проще всего использовать пакет fmt и его глобальные функции, например:
fmt.Println("Process started")
fmt.Println("Something went wrong. Type e-mail to receive report:")
var i int = 3
var err error = io.Eof
fmt.Printf("And some formatted text: number: %d, an error: %v\n", i, err)
Если вам нужна дополнительная конфигурация или возможность перенаправления вывода, например в файл (в будущем), то вы можете использовать пакет log.
log.Println("Process started")
log.Println("Something went wrong. Type e-mail to receive report:")
var i int = 3
var err error = io.Eof
log.Printf("And some formatted text: number: %d, an error: %v", i, err)
Одно заметное отличие состоит в том, что по умолчанию пакет fmt записывает в os.Stdout, а пакет log записывает в os.Stderr. Оба они появляются в вашей консоли, но не следует забывать, если вы хотите перенаправить эти потоки. Другое отличие состоит в том, что пакет log добавляет новую строку к каждому вызову, если он не заканчивается на ней.
Как перенаправить на cmd?
Результат появится в вашем окне без перенаправления. Я упомянул перенаправление, поскольку вы можете получить другой результат при перенаправлении стандартного вывода или стандартной ошибки в зависимости от того, какой пакет вы использовали.
Да, вывод появляется в моей IDE приставка. Но он не появляется, когда я запускаю exe из командная строка
@StayCool Вы уверены, что перестроили и запустили последнюю версию своего приложения? Сначала попробуйте запустить его с go run appname.go, чтобы он всегда компилировался.
Это описано на первой странице Go-тура: tour.golang.org/welcome/1