我得到了一個(gè)用 Golang 編寫(xiě)的腳本,我不太明白。我想知道他為什么go server.Start()在劇本里面寫(xiě)?為什么不簡(jiǎn)單地寫(xiě)server.Start?package mainimport ( "github.com/miekg/dns" "testing" "time")const TEST_ADDR = "127.0.0.1:9953"func TestDNSResponse(t *testing.T) { server := NewDNSServer(&Config{ dnsAddr: TEST_ADDR, }) go server.Start() // Allow some time for server to start time.Sleep(150 * time.Millisecond) m := new(dns.Msg) m.Id = dns.Id() m.Question = []dns.Question{ dns.Question{"docker.", dns.TypeA, dns.ClassINET}, } c := new(dns.Client) _, _, err := c.Exchange(m, TEST_ADDR) if err != nil { t.Error("Error response from the server", err) } server.Stop() c = new(dns.Client) _, _, err = c.Exchange(m, TEST_ADDR) if err == nil { t.Error("Server still running but should be shut down.") }}
1 回答

慕森卡
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果你調(diào)用一個(gè)以 go 關(guān)鍵字為前綴的函數(shù),它會(huì)以 goroutine 的形式調(diào)用該函數(shù)。goroutine 是一個(gè)能夠與其他函數(shù)同時(shí)運(yùn)行的函數(shù)。
通常,當(dāng)我們調(diào)用一個(gè)函數(shù)時(shí),它會(huì)按正常順序執(zhí)行所有函數(shù)語(yǔ)句,然后返回調(diào)用后的下一行。使用 goroutine,我們立即返回到下一行,而不是等待函數(shù)完成。
- 1 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消