Golang:在脚本里面执行命令?

时间:2016-06-07 09:47:00

标签: 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.")
    }
}

1 个答案:

答案 0 :(得分:0)

如果调用带有go关键字前缀的函数,它将以goroutine的形式调用该函数。 goroutine是一个能够与其他函数同时运行的函数。

通常,当我们调用一个函数时,它将按正常顺序执行所有函数语句,然后返回调用后的下一行。使用goroutine,我们会立即返回到下一行,并且不要等待该功能完成。

相关问题