为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:脚本内的 go 命令?

Golang:脚本内的 go 命令?

Go
SMILET 2022-01-17 16:16:41
我得到了一个用 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,我们立即返回到下一行,而不是等待函数完成。


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信