我得到了一个用 Golang 编写的脚本,我不太明白。我想知道他为什么go server.Start()在剧本里面写?为什么不简单地写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贡献1806条经验 获得超8个赞
如果你调用一个以 go 关键字为前缀的函数,它会以 goroutine 的形式调用该函数。goroutine 是一个能够与其他函数同时运行的函数。
通常,当我们调用一个函数时,它会按正常顺序执行所有函数语句,然后返回调用后的下一行。使用 goroutine,我们立即返回到下一行,而不是等待函数完成。
- 1 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消