go 判断通道有没有数据

判断通道是否有数据,无数据退出

package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

func FileRead(filename string, filesChan chan string) {
    defer close(filesChan)    // 处理完退出通道
    f, err := os.Open(filename)
    if err != nil {
        return
    }
    reader := bufio.NewReader(f)
    for {
        str, err := reader.ReadString('\n')
        if err == io.EOF {
            break
        } else {
            filesChan <- str
        }
    }
}

func main() {
    filename := "D:\\code\\goland\\test\\main.go"
    c := make(chan string)
    go FileRead(filename, c)

    for {
        if data, ok := <-c; ok {    // ok判断通道有没有关闭,关闭后ok值为false
            fmt.Print(data)
        } else {
            break
        }
    }

}

  

posted @ 2020-09-17 18:46  枯藤老艹树  阅读(1185)  评论(0编辑  收藏  举报