-2
我有以下代碼。要特別注意的匿名函數:匿名函數似乎不在Go例程中執行
func saveMatterNodes(matterId int, nodes []doculaw.LitigationNode) (bool, error) {
var (
err error
resp *http.Response
)
// Do this in multiple threads
for _, node := range nodes {
fmt.Println("in loops")
go func() {
postValues := doculaw.LitigationNode{
Name: node.Name,
Description: node.Description,
Days: node.Days,
Date: node.Date,
IsFinalStep: false,
Completed: false,
Matter: matterId}
b := new(bytes.Buffer)
json.NewEncoder(b).Encode(postValues)
resp, err = http.Post("http://127.0.0.1:8001/matterNode/", "application/json", b)
io.Copy(os.Stdout, resp.Body)
fmt.Println("Respone from http post", resp)
if err != nil {
fmt.Println(err)
}
}()
}
if err != nil {
return false, err
} else {
return true, nil
}
}
如果我刪除go func() {}()
部分和剛剛離開的代碼之間似乎執行罰款,但我添加的那一刻回到它不執行。任何想法,爲什麼?我最初以爲也許是因爲它在不同的線程上執行,但這似乎並不是這種情況,因爲我可以在我的web服務訪問日誌中看到它未執行。
是的!當然:-)謝謝@Pradip –