当前位置: 首页 > news >正文

go io.Pipe

没有啥能说明白的,类似就是一个通道,写和读是一对一的。读取会阻塞,只有等到写完后才可以读取。

package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "time"
)

func main() {
    log.Println("main ...")

    reader, writer := io.Pipe()

    // 开启一个线程来搞
    go func() {
       defer writer.Close()
       for i := 0; i < 5; i++ {
          _, err := writer.Write([]byte(fmt.Sprintf("message %d\n", i)))
          if err != nil {
             fmt.Println("Error writing to pipe:", err)
             return
          }
       }
       time.Sleep(1 * time.Second)
    }()

    buf := new(bytes.Buffer)
    // 阻塞等待writer.Close()完成
    _, err := buf.ReadFrom(reader)
    //或者 _, err := io.Copy(buf, reader)
    if err != nil && err != io.EOF {
       fmt.Println("Error reading from pipe:", err)
       return
    }

    // 输出读取到的数据
    fmt.Println("Data read from pipe:", buf.String())
    log.Println("success ..")
}

相关文章:

  • 【拜读】Tensor Product Attention Is All You Need姚期智团队开源TPA兼容RoPE位置编码
  • 三、动规_子数组系列
  • python学智能算法(一)|模拟退火算法:原理解释和最小值求解
  • Python内置函数详解
  • 《论系统需求分析方法》写作心得 - 系统分析师
  • 分布式文件系统HDFS
  • Windows 中的启动项如何打开?管理电脑启动程序的三种方法
  • 迪威模型:引领 3D 模型轻量化技术革新
  • WordPress ltl-freight-quotes-estes-edition sql注入漏洞(CVE-2024-13488)(附脚本)
  • 【开源项目】数字孪生南昌~开源工程及源码
  • 可编辑35页PPT | DeepSeek如何赋能职场应用
  • C++STL容器之map
  • 黑马点评_登录模块
  • HtML之JavaScript BOM编程
  • 【ELK】【Elasticsearch】数据查询方式
  • ros的rqt工具箱的使用(持续更新)
  • 清华大学deepseek教程第四版 DeepSeek+DeepResearch 让科研像聊天一样简单(附下载)
  • 【Gee】Day4:分组控制
  • MySQL日志undo log、redo log和binlog详解
  • EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
  • 人民日报关注多地精简优化基层考核:化繁为简,考准考精考实
  • 7天6板南京港:控股子公司没有直达美国外贸集装箱直达航线
  • 照护者说|胡泳:向死而在,爱这个世界
  • 住建部:目前已累计建设改造各类市政管网50万公里
  • 国家发改委:正在会同有关方面,加快构建统一规范、协同共享、科学高效的信用修复制度
  • 国家发改委谈稳定外资:将研究制定鼓励外资企业境内再投资政策措施