Не печатает через fmt в go routine

59 views
Skip to first unread message

сергей нескаж

unread,
Aug 3, 2017, 6:14:40 AM8/3/17
to Golang Russian


Приветствую всех!
Помогите разобраться.
Писал небольшую программу и обнаружил что из go рутины не выводится на консоль НИЧЕГО.
Переписал в минимально возможный модуль. 
package main


import (
 
"fmt"
)


func pr
() {
 fmt
.Print("asd")
}


func main
() {
 pr
()
 go pr
()
}

В итоге предполагаю получить 2 строки asd, а выводится только одна.(В моем проекте было 100 рутин выводящих информацию, там тоже было пусто)
ОС Debian 4.6.4
Редактор Atom

Версии и окружение
go version go1.8.3 linux/amd64 $ /usr/local/go/bin/go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/user/go" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build171697032=/tmp/go-build -gno-record-gcc-switches" CXX="g++" CGO_ENABLED="1" PKG_CONFIG="pkg-config" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2"

ma...@kevac.org

unread,
Aug 3, 2017, 6:18:48 AM8/3/17
to Golang Russian
Ваша программа выходит до того как горутина вообще запускается.
Основной тред не ждет выхода горутин.
Вам нужно ждать самому.
Например
func main() {
 pr
()
 go pr
()
 select{}
}

--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Daniel Podolsky

unread,
Aug 3, 2017, 6:27:06 AM8/3/17
to gola...@googlegroups.com
> func main() {
> pr()
> go pr()
> select{}
> }

так, конечно, делать не надо, надо научиться пользоваться
https://golang.org/pkg/sync/#WaitGroup
Reply all
Reply to author
Forward
0 new messages