Golang:脚本内的 go 命令?

我得到了一个用 Golang 编写的脚本,我不太明白。我想知道他为什么go server.Start()在剧本里面写?为什么不简单地写server.Start?


package main


import (

    "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.")

    }

}


SMILET
浏览 141回答 1
1回答

慕森卡

如果你调用一个以 go 关键字为前缀的函数,它会以 goroutine 的形式调用该函数。goroutine 是一个能够与其他函数同时运行的函数。通常,当我们调用一个函数时,它会按正常顺序执行所有函数语句,然后返回调用后的下一行。使用 goroutine,我们立即返回到下一行,而不是等待函数完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go