小编Hen*_*ohn的帖子

如何从goroutine的channel中持续接收数据

我是 Golang 的初学者。我做了一个关于Go通道的练习。我在主 goroutine 中打开并读取文件中的数据,然后将数据传递给第二个 goroutine 以保存到带有通道的另一个文件中。我的代码是流程

  func main() {
   f, err := os.OpenFile("test.go", os.O_RDONLY, 0600)
   ch := make(chan []byte)
   buf := make([]byte, 10)
   bytes_len, err := f.Read(buf)
   fmt.Println("ReadLen:", bytes_len)
   if err != nil {
      fmt.Println("Error: ", err)
      return
   }
   go WriteFile(ch)
   for {
      ch<-buf
      bytes_len, err = f.Read(buf)
      if err != nil {
          fmt.Println("error=", err)
          break
      }
      if bytes_len < 10 {
          ch<-buf[:bytes_len]
          fmt.Println("Finished!")
          break
      }
   }
   time.Sleep(1e9)
   f.Close()
 }

  func WriteFile(ch <-chan []byte) {
    fmt.Println("* begin!")
    f, err …
Run Code Online (Sandbox Code Playgroud)

channel go

5
推荐指数
1
解决办法
6738
查看次数

标签 统计

channel ×1

go ×1