好好爱自己!

【转】io.Reader in depth

func Reverse(s string) (string, error)
func Reverse(r io.Reader) io.Reader

 

----------------------------

 

io.Reader in depth

This article aims to convince you to use io.Reader in your own code wherever you can.

Let’s have a look at io.Reader:

type Reader interface {
Read(p []byte) (n int, err error)
}

Examples of readers

There are many kinds of Reader types available in the standard library, and you’ve almost certainly used at least one of them.

var r io.Reader
var err error
r, err = os.Open("file.txt")
var r io.Reader
r = strings.NewReader("Read will return these bytes")
var r io.Reader
r = request.Body
var r io.Reader
var buf bytes.Buffer
r = &buf

Using readers

Now we have a few Reader types — let’s explore ways in which they can be used.

p := make([]byte, 256)
n, err := r.Read(p)
b, err := ioutil.ReadAll(r)
n, err := io.Copy(w, r)
err := json.NewDecoder(r).Decode(v)
r = gzip.NewReader(r)

Take io.Reader when you can

If you’re designing a package or utility (even if it’s an internal thing that nobody will ever see) rather than taking in strings or []byte slices, consider taking in an io.Reader if you can for data sources. Because suddenly, your code will work with every type that implements io.Reader.

func Reverse(s string) (string, error)
func Reverse(r io.Reader) io.Reader
r = Reverse(strings.NewReader("Make me backwards"))
f, err := os.Open("file.txt")
if err != nil {
log.Fatalln(err)
}
r = Reverse(f)
func handle(w http.ResponseWriter, r *http.Request) {  rev := Reverse(r.Body)  // etc...
}
posted @   立志做一个好的程序员  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2020-11-12 postgresql 的value 子句——VALUES(0)
2020-11-12 【原文】PostgreSQL中RECURSIVE递归查询使用总结
2017-11-12 ubuntu How do I configure proxies without GUI?
2017-11-12 Ubuntu server命令行配置shadowsocks全局代理
2015-11-12 postgres 错误duplicate key value violates unique constraint 解决方案

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示