Мне просто интересно, что если горутина, вызванная в методе, определенном в пакете, может не запуститься.
Вот структура моей примерной программы:
sample
├── abc
│ └── abc.go
└── main.go
А ниже приведен исходный код abc.go и main.go.
abc.go
1 package abc
2
3 import (
4 "fmt"
5 )
6
7 func PrintCde() {
8 fmt.Println("Cde")
9 }
10
11
12 type Abc struct {}
13
14 func (a Abc)PrintAbc() {
15 fmt.Println("Abc")
16 go PrintCde()
17 for {}
18 }
main.go
1 package main
2
3 import (
4 "sample/abc"
5 )
6
7 func main() {
8 var a abc.Abc
9 a.PrintAbc()
10
11 }
Затем, если я запускаю программу, я никогда не получаю строку «Cde», напечатанную на экране.
Я могу предположить, что цикл for в методе PrintAbc занимает вычислительные ресурсы, а функция PrintCde никогда не планировалась для запуска.
Если это причина, есть ли какие-либо другие способы предотвратить повторный запуск метода PrintAbc, но не занимать ресурсы для запуска функции printCde?