func helloWorld() {
fmt.Print("Hello");
go func() {
fmt.Println(" World");
}()
}
[Go] khi nào go func được gọi?
Mình có hàm helloWorld thế này:
Nhưng khi gọi hàm này thì không thấy World được in ra, vậy khi nào go func được gọi mọi người nhỉ?
go
Remain: 5
4 Answers
ducnt114
Pundit
ducnt114
Pundit
khả năng là hàm helloWorld() đã thực thi xong và chương trình của bạn đã thoát trước khi go func() được chạy.
Bạn thử sleep vài giây ở cuối hàm helloWorld() thì sẽ thấy go func() chạy và in ra màn hình.
-
1
tvd12
Enlightened
tvd12
Enlightened
Vậy thì lợi ích của việc viết hàm go func này là gì? nó khác gì với việc dùng defer?
-
0
Cesc Nguyễn
Beginner
Cesc Nguyễn
Beginner
bản chất ở đó là nó chạy 1 goroutine khác so với main routine anh nha. Mà do main routine đã kết thúc trước khi goroutine print chữ "world" được gọi. Vì thế mình không nhìn thấy nó in ra. Nếu muốn nhìn thấy "hello world" em nghĩ có thể sleep chương trình lại một chút hoặc dùng channel để block lại chương trình cho đến khi in ra
-
1
Cesc Nguyễn
Beginner
Cesc Nguyễn
Beginner
ơ chú cũng dùng nền tảng này à. thi thoảng lên đây ae trao đổi chiêu thức
-
0