当我添加multipart.NewWriter(body_buf)时,程序不会停止

时间:2018-06-25 07:47:05

标签: go

package main

import (
    "fmt"
    "mime/multipart"
    "bytes"
)

var channel chan string = make(chan string)

func recognize(file_path string) {
    body_buf := &bytes.Buffer{}
    fmt.Println(body_buf)

    send_writer := multipart.NewWriter(body_buf)
    fmt.Println(send_writer)
}

func loop() {
    for i := 0; i < 10; i++ {
        channel <- "dd"
    }
}


func main() {
    go loop()
    for v :=  range channel {
        fmt.Println(len(channel), v)
    }
}

程序不会停止,即使我不调用recognize函数,我也不知道为什么,怎么解释

当我删除

send_writer := multipart.NewWriter(body_buf)

程序将停止并出现致命错误:死锁

有什么不同,谁能告诉我

1 个答案:

答案 0 :(得分:0)

该程序不会停止,因为您永远不会关闭通道,因此在它上面的范围循环不会终止。关闭loop中的频道,如

func loop() {
    for i := 0; i < 10; i++ {
        channel <- "dd"
    }
    close(channel)
}

它应该停止。