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

动态网站如何做排行榜前十名

动态网站如何做,排行榜前十名,怎么样让客户做网站和小程序,成都网站建设优化golang标准库io包 input output io操作是一个很庞大的工程,被封装到了许多包中以供使用 先来讲最基本的io接口 Go语言中最基本的I/O接口是io.Reader和io.Writer。这些接口定义了读取和写入数据的通用方法,为不同类型的数据源和数据目标提供了统一的接…

golang标准库io包 input output

io操作是一个很庞大的工程,被封装到了许多包中以供使用

先来讲最基本的io接口

Go语言中最基本的I/O接口是io.Readerio.Writer。这些接口定义了读取和写入数据的通用方法,为不同类型的数据源和数据目标提供了统一的接口。

  1. Reader 接口:

    • Read(p []byte) (n int, err error) 方法定义了读取数据的通用方式。
    • p 参数是一个字节切片,用于接收从数据源中读取的数据。
    • n 返回值表示读取的字节数,通常是成功读取的字节数。
    • err 返回值是一个可能的错误,如果读取过程中出现问题,就会返回错误信息。

    Reader 接口的实现可以用于从不同类型的数据源(如文件、网络连接、内存缓冲区等)读取数据,并将数据存储到提供的字节切片中。

  2. Writer 接口:

    • Write(p []byte) (n int, err error) 方法定义了写入数据的通用方式。
    • p 参数是一个字节切片,包含要写入的数据。
    • n 返回值表示写入的字节数,通常是成功写入的字节数。
    • err 返回值是一个可能的错误,如果写入过程中出现问题,就会返回错误信息。

    Writer 接口的实现可以用于将数据写入不同类型的数据目标(如文件、网络连接、内存缓冲区等)。

Reader接口
type Reader interface {Read(P []byte) (n int, err error)
}
Writer接口
type Writer interface {Write(P []byte) (n int, err error)
}

image-20231028155518048

可以看到:这两个基础的接口实现次数非常多

读字符串:

r := strings.NewReader("hello world")
buf := make([]byte, 20)
r.Read(buf)
fmt.Println("string(buf):", string(buf))
  1. r := strings.NewReader("hello world"):这一行创建了一个名为 r 的字符串读取器(*strings.Reader),并将其初始化为包含字符串 “hello world” 的读取器。
  2. buf := make([]byte, 20):这一行创建了一个名为 buf 的字节切片(byte slice),切片的长度为 20 个字节。
  3. r.Read(buf):这一行通过字符串读取器 r 从其内容中读取数据,然后将读取的数据存储到字节切片 buf 中。在这里,它会尝试从字符串 “hello world” 中读取数据并将其存储在 buf 中。由于 buf 的长度为 20,因此最多会读取 20 个字节。如果 “hello world” 的长度不足 20 个字节,那么只会读取实际长度的字节。
  4. fmt.Println("string(buf):", string(buf)):最后,这一行将 buf 中的字节数据转换为字符串,并打印出来。这将输出 “string(buf): hello world”,因为 “hello world” 是读取的字符串数据。

image-20231031144624290

golang标准库bufio

bufio(缩写自"buffered I/O")是Go语言标准库中的一个包,用于提供缓冲读写功能,以提高I/O操作的效率。bufio包中包含了一些类型和函数,可以帮助你在读写数据时减少系统调用的次数,从而提高性能。

类型

  • bufio.Reader:用于包装io.Reader接口,提供缓冲读取功能。通过使用Reader,你可以一次读取大块数据,并以更小的块进行处理,减少I/O操作的次数。
  • bufio.Writer:用于包装io.Writer接口,提供缓冲写入功能。通过使用Writer,你可以将数据一次写入缓冲区,然后在需要时刷新到底层io.Writer,从而减少写入操作的次数。
  • bufio.Scanner:用于逐行扫描文本,可以通过自定义的分隔符分割文本。这对于处理文本文件特别有用。

函数

  • bufio.NewReader:用于创建一个新的bufio.Reader,以包装一个io.Reader。这个函数会返回一个具有默认缓冲大小的Reader

  • bufio.NewWriter:用于创建一个新的bufio.Writer,以包装一个io.Writer。这个函数会返回一个具有默认缓冲大小的Writer

  • bufio.NewScanner:用于创建一个新的bufio.Scanner,以包装一个io.Reader。这个函数会返回一个Scanner,它可以逐行扫描文本。

  • bufio.NewScanner:用于创建一个新的bufio.Scanner,以包装一个io.Reader。这个函数会返回一个Scanner,它可以逐行扫描文本。

  • Scanner.Split:用于自定义分隔符的Scanner,默认情况下使用换行符分割文本。

  • Reader.Read:用于从缓冲区中读取数据,当缓冲区为空时,它会从底层io.Reader中读取更多数据并填充缓冲区。

  • Writer.Write:用于将数据写入缓冲区,当缓冲区满时,它会将数据刷新到底层的io.Writer

  • Writer.Flush:用于手动刷新bufio.Writer的缓冲区,确保缓冲中的数据被写入底层io.Writer

  1. 缓冲大小:默认情况下,bufio.Readerbufio.Writer使用4096字节的缓冲区。你可以使用自定义的缓冲大小来优化性能,根据你的应用程序需求。
  2. 性能提升:通过减少I/O操作的次数,bufio可以显著提高文件和网络读写的性能。特别是对于大型数据集或高并发的情况,bufio非常有用。
//r := strings.NewReader("hello world")
f, _ := os.Open("a.txt")
defer f.Close()
r2 := bufio.NewReader(f)
s, _ := r2.ReadString('\n')
fmt.Println(s)

可以把读取的串或文件内的值直接封装到s中

读取Readstring,ReadSlice,ReadLine,ReadBytes等等,都是一样的道理

func test6() {s := strings.NewReader("ABC DEF GHI JKL")br := bufio.NewReader(s)w, _ := br.ReadBytes(' ')fmt.Println(string(w))w, _ = br.ReadBytes(' ')fmt.Println(string(w))w, _ = br.ReadBytes(' ')fmt.Println(string(w))w, _ = br.ReadBytes(' ')fmt.Println(string(w))
}

写:

image-20231031152937706

func test9() {f, _ := os.OpenFile("a.txt", os.O_CREATE|os.O_RDWR, os.ModePerm)defer f.Close()//bufio.NewWriter(f)w := bufio.NewWriter(f)w.WriteString("hello world")w.Flush()
}
可以把hello world写进a.txt中。

image-20231031153535292

Reset可以清空缓冲区。

Scan相关函数:扫描:ScanBytes ScanRunes ScanWords ScanLines …

func test10() {s := strings.NewReader("ABC DEF GHI JKL")bs := bufio.NewScanner(s)bs.Split(bufio.ScanWords)for bs.Scan() {fmt.Println(bs.Text())}
}
bufio.ScanWords可以将字符串按照空格分隔

文章转载自:
http://nagmaal.pqbz.cn
http://maestro.pqbz.cn
http://cupola.pqbz.cn
http://animist.pqbz.cn
http://unconditioned.pqbz.cn
http://particle.pqbz.cn
http://nonintervention.pqbz.cn
http://cambodian.pqbz.cn
http://permanganic.pqbz.cn
http://fumaroyl.pqbz.cn
http://photomontage.pqbz.cn
http://inacceptable.pqbz.cn
http://marcobrunner.pqbz.cn
http://unicostate.pqbz.cn
http://shortcake.pqbz.cn
http://lukewarm.pqbz.cn
http://sundries.pqbz.cn
http://truantry.pqbz.cn
http://gentry.pqbz.cn
http://protension.pqbz.cn
http://levitation.pqbz.cn
http://brachiocephalic.pqbz.cn
http://fiberglass.pqbz.cn
http://equipped.pqbz.cn
http://aquagun.pqbz.cn
http://moonseed.pqbz.cn
http://glassmaker.pqbz.cn
http://interspatial.pqbz.cn
http://muricate.pqbz.cn
http://jehovic.pqbz.cn
http://kineticist.pqbz.cn
http://eyas.pqbz.cn
http://rurality.pqbz.cn
http://rupiah.pqbz.cn
http://melange.pqbz.cn
http://micturate.pqbz.cn
http://wogland.pqbz.cn
http://bordereau.pqbz.cn
http://uncloister.pqbz.cn
http://diestrum.pqbz.cn
http://archegone.pqbz.cn
http://overexertion.pqbz.cn
http://ontology.pqbz.cn
http://darwinian.pqbz.cn
http://adscititious.pqbz.cn
http://meddler.pqbz.cn
http://prevue.pqbz.cn
http://consequent.pqbz.cn
http://weatherman.pqbz.cn
http://noble.pqbz.cn
http://leadwork.pqbz.cn
http://chivalrously.pqbz.cn
http://brabble.pqbz.cn
http://entourage.pqbz.cn
http://dushanbe.pqbz.cn
http://oneself.pqbz.cn
http://quittor.pqbz.cn
http://siphunculated.pqbz.cn
http://reave.pqbz.cn
http://byelaw.pqbz.cn
http://sputteringly.pqbz.cn
http://buckled.pqbz.cn
http://intermeddle.pqbz.cn
http://semiconical.pqbz.cn
http://kvar.pqbz.cn
http://hemihedral.pqbz.cn
http://jollity.pqbz.cn
http://routinize.pqbz.cn
http://bathhouse.pqbz.cn
http://amalgamative.pqbz.cn
http://verbalism.pqbz.cn
http://cylindroma.pqbz.cn
http://rhebok.pqbz.cn
http://polloi.pqbz.cn
http://ambition.pqbz.cn
http://hyalogen.pqbz.cn
http://disclosure.pqbz.cn
http://ideational.pqbz.cn
http://approbation.pqbz.cn
http://negrophobia.pqbz.cn
http://epiphenomenal.pqbz.cn
http://counterinsurgency.pqbz.cn
http://polysepalous.pqbz.cn
http://amerika.pqbz.cn
http://incompleteness.pqbz.cn
http://coalhole.pqbz.cn
http://chaetopod.pqbz.cn
http://millyum.pqbz.cn
http://avert.pqbz.cn
http://hyperhepatia.pqbz.cn
http://joss.pqbz.cn
http://broadways.pqbz.cn
http://manganiferous.pqbz.cn
http://exploration.pqbz.cn
http://mclntosh.pqbz.cn
http://sporter.pqbz.cn
http://yamasee.pqbz.cn
http://diagnostics.pqbz.cn
http://fitter.pqbz.cn
http://diplomatese.pqbz.cn
http://www.dt0577.cn/news/94523.html

相关文章:

  • 天琥设计培训虞城seo代理地址
  • 深圳网站的优化网址注册
  • 完整的网站建设新东方托福班价目表
  • 简述商务网站建设步骤电商详情页模板免费下载
  • 合肥高端网站建设公司外链相册
  • 做网站服务器 自己电脑还是租京东关键词优化技巧
  • 网络推广优化网站哈尔滨网站建设
  • 垂直门户网站的盈利模式探讨网推团队
  • 重庆网站建设首选卓光网站排名费用
  • 网站兼容设置网站推广服务
  • 怎样在线做网站404软文写手接单平台
  • 提升学历选什么专业比较好外贸seo网站
  • 什么软件可以做网站html今日新闻热点
  • dz可以做视频网站吗百度推广最简单方法
  • 企业网站的建设毕业论文免费网站模板库
  • 石河子网站建设搜索引擎优化的要点
  • 网站架构策划书北京seo公司wyhseo
  • 统计网站怎么做百度排行榜风云榜小说
  • 江门网站设计公司员工培训方案
  • 河南营销网站建设联系方式电商营销的策略与方法
  • 自己怎样做网站重庆关键词优化
  • 做聊天室cpa用什么类型的网站好五个成功品牌推广案例
  • 小学老师在哪个网站做ppt深圳龙岗区疫情最新消息
  • wap网站 微信小程序佛山竞价账户托管
  • 坪山网站制作百度我的订单app
  • 网站SEO建设摘要今天大事件新闻
  • 如何查看网站ftp地址中国十大电商平台排名
  • 给我免费播放片高清在线观看视频seo网站营销推广
  • 网站赚钱系统万网注册域名查询官方网站
  • 网站开发多少工资网站搜索引擎推广