欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > GO語io包的常用接口

GO語io包的常用接口

熱門標簽:滁州自建外呼系統 經常接到推銷電話機器人的電話 海外照相館地圖標注入駐 智能營銷軟件 客服級電銷機器人 旅游廁所如何電子地圖標注 工商信用卡外呼系統教程 外呼系統多少錢一年 外呼系統如何接收服務密碼

本文實例分析了GO語io包的常用接口。分享給大家供大家參考。具體分析如下:

我沒有 C/C++ 基礎,沒有接口的概念,且從 Python 投奔而來,Python 的極簡主義(一個結果往往只提供一個方法),讓我在 Golang 中非常迷糊,特別是文件的讀寫操作,因為 Go 的文件讀寫操作有很多的方法,讓我不知道怎么選擇。直到我學習了 interface 的概念,然后由看了 package io 后才慢慢理解,也漸漸的喜歡上了 Golang 的靈活性。以我的經驗來說,接口是一個很重要的知識點,是一系列操作的規范,特別是公共接口尤為重要,如:package io

本文僅僅列舉最常用的幾個接口,如果您想系統的學習 io 接口,建議閱讀底部參考鏈接。

一、IO 接口概述

package os 提供了對 I/O 原語的基本接口,使之成為共享的公共接口,這些公共接口抽象出了泛用的函數并附加了一些相關的原語的操作。因為這些接口和原語是對底層實現完全不同的低水平操作的包裝,除非得到其它方面的通知,客戶端不應假設它們是并發執行安全的。

在 package os 中最重要的是兩個接口:Reader 和 Writer 接口。本章所提到的各種接口,都跟這兩個接口有關,也就是說,只要實現了這兩個接口,它就有了 IO 的功能。

小貼士:

var EOF = errors.New("EOF"): 在 package io中定義,使用非常頻繁。正常情況下當 Read() 無法得到更多返回時就返回 EOF,即文件到達了結尾(end-of-file)。

二、io.Reader 和 io.Writer

定義:

復制代碼 代碼如下:
type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}


Read 將 len(p) 個字節讀取到 p 中,當遇到任何錯誤(包括EOF)會立即返回已讀取的字節數,函數結束會返回成功讀取的字節數和任何錯誤。
Write 將 len(p) 字節數據從 p 寫入底層的數據流,然后返回成功寫入的字節數和任何錯誤。

從接口名稱很容易猜到,一般地,Go中接口的命名約定:接口名以er結尾。注意,這里并非強行要求,你完全可以不以 er 結尾。標準庫中有些接口也不是以 er 結尾的。
示例:

復制代碼 代碼如下:
func wr() {
 f, _ := os.Create("at.txt")
 defer f.Close()
 f.Write([]byte("Go是一種令人愉悅的編程語言")) //寫入字節流
 f.Seek(0, os.SEEK_SET)            //將指針重置

 p := make([]byte, 2) // 讀取 2 byte( len(buf)=2 )
 if _, err := f.Read(p); err != nil {
  log.Fatal("[F]", err)
 }
 fmt.Printf("讀取字符 \"%s\", 長度為 %d byte\n", p, len(p))

 p = make([]byte, 50)
 if _, err := f.Read(p); err != nil {
  if err != io.EOF { //忽略 EOF 錯誤
   log.Fatal("[F]", err)
  }
 }
 fmt.Printf("讀取字符 \"%s\", 長度為 %d byte\n", p, len(p))
}


讀取字符 "Go", 長度為 2 byte
讀取字符 "是一種令人愉悅的編程語言              ", 長度為 50 byte

三、io.ReaderAt 和 os.WriterAt

定義(off 是 offset 的縮寫):

復制代碼 代碼如下:
type ReaderAt interface {
    ReadAt(p []byte, off int64) (n int, err error)
}

type WriterAt interface {
    WriteAt(p []byte, off int64) (n int, err error)
}


ReadAt() 從基本輸入源的偏移量 off 處開始,其他和 Read() 一樣;
WriteAt() 從基本輸入源的偏移量 off 處開始,其他和 Write() 一樣。

示例:

復制代碼 代碼如下:
func at() {
 f, _ := os.Create("at.txt")
 defer f.Close()

 f.WriteString("Go是一種令人愉悅的編程語言")
 f.WriteAt([]byte("程序"), 26) //偏移 26byte 改寫“編程”->“程序”

 fi, _ := f.Stat()              //獲取文件信息
 p := make([]byte, fi.Size()-2) //文件大小減去偏移值
 f.ReadAt(p, 2)                 //偏移 2 byte

 os.Stdout.Write(p)
}

四、io.ReaderFrom 和 os.WriterTo

定義:

復制代碼 代碼如下:
type ReaderFrom interface {
    ReadFrom(r Reader) (n int64, err error)
}

type WriterTo interface {
    WriteTo(w Writer) (n int64, err error)
}


ReadFrom() 從 r 中讀取數據,直到 EOF 或發生錯誤。返回讀取的字節數和 io.EOF 之外的其他錯誤。ReadFrom不會返回EOF錯誤

WriteTo() 將數據寫入 w 中,直到沒有數據可寫或發生錯誤。返回寫入的字節數和任何錯誤。

示例:

復制代碼 代碼如下:
func fromTo() {
 r := strings.NewReader("Go是一種令人愉悅的編程語言") //創建一個 Reader
 w := bufio.NewWriter(os.Stdout)          //創建一個 Writer

 w.ReadFrom(r) // w 一次性讀取 r 的全部內容
 w.Flush()

 r.Seek(0, os.SEEK_SET) //重置指針

 r.WriteTo(w) // r 一次性將內容寫入 w 中
 w.Flush()
}

五、io.Seeker

定義:

復制代碼 代碼如下:
type Seeker interface {
    Seek(offset int64, whence int) (ret int64, err error)
}

Seek 設置下一次 Read 或 Write 的偏移量(offset),它的解釋取決于 whence。示例見上文。

whence的值,在os包中定義了相應的常量:

復制代碼 代碼如下:
SEEK_SET int = 0 //從文件的起始處開始設置 offset
SEEK_CUR int = 1 //從文件的指針的當前位置處開始設置 offset
SEEK_END int = 2 //從文件的末尾處開始設置 offset

六、io.Closer

定義:

復制代碼 代碼如下:
type Closer interface {
    Close() error
}

用于關閉數據流,釋放資源,不用多廢話了吧。

七、其他

復制代碼 代碼如下:
type ByteReader interface {
 ReadByte() (c byte, err error)
}

type RuneReader interface {
    ReadRune() (r rune, size int, err error)
}


ReadByte讀取輸入中的單個字節并返回。如果沒有字節可讀取,會返回錯誤。
ReadRune讀取單個utf-8編碼的字符,返回該字符和它的字節長度。如果沒有有效的字符,會返回錯誤。
復制代碼 代碼如下:
type ByteWriter interface {
    WriteByte(c byte) error
}

WriteByte寫入一個字節,如果寫入失敗會返回錯誤。

參考:
https://gowalker.org/io
https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md

希望本文所述對大家的GO語言程序設計有所幫助。

您可能感興趣的文章:
  • Go語言的os包中常用函數初步歸納
  • 舉例講解Go語言中函數的閉包使用
  • 深入理解Go語言中的閉包
  • go語言里包的用法實例
  • Go語言聲明一個多行字符串的變量
  • Go語言基礎知識總結(語法、變量、數值類型、表達式、控制結構等)
  • GO語言獲取系統環境變量的方法
  • Go語言中的變量聲明和賦值
  • 詳解Golang編程中的常量與變量
  • go語言學習之包和變量詳解

標簽:本溪 運城 深圳 湘潭 喀什 九江 楚雄 晉城

巨人網絡通訊聲明:本文標題《GO語io包的常用接口》,本文關鍵詞  語,包,的,常用,接口,語,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《GO語io包的常用接口》相關的同類信息!
  • 本頁收集關于GO語io包的常用接口的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    成人h动漫精品一区二区| 欧美伊人久久久久久久久影院| 在线播放日韩导航| 亚洲精品欧美综合四区| 成人av在线资源| 黄视频网站免费看| 亚洲国产精华液网站w| 国产永久精品大片wwwapp| av男人的天堂av| 精品三级在线看| 麻豆国产精品官网| 中文字幕免费高清| 久久综合给合久久狠狠狠97色69| 久久99精品国产.久久久久| 级毛片内射视频| 久久久久久久久久看片| 国产一区二区三区综合| 国产麻豆a毛片| 国产精品国产三级国产aⅴ入口| 国产宾馆实践打屁股91| 国产黄色的视频| 亚洲视频一区二区免费在线观看| 91丨九色丨尤物| 欧美视频在线播放| 五月婷婷欧美视频| 蜜桃传媒一区二区亚洲av| 精品国产伦一区二区三区免费| 极品少妇一区二区| 神马久久精品综合| 亚洲免费观看视频| 涩视频在线观看| 日韩欧美高清在线| 国产一区二区三区av电影| 99久久久无码国产精品不卡| 国产精品盗摄一区二区三区| 深夜福利网站在线观看| 91精品国产综合久久小美女| 精品一区二区久久久| 三级黄色录像视频| 亚洲精品国产a久久久久久 | 久久精品久久99精品久久| 调教驯服丰满美艳麻麻在线视频| 欧美国产97人人爽人人喊| 不卡一区二区三区四区| 欧美日韩你懂得| 蜜臀久久99精品久久久久久9| 国产又粗又硬视频| 亚洲欧美激情在线| 熟女丰满老熟女熟妇| 国产欧美日韩在线观看| 91视频免费播放| 日韩欧美高清一区| 成人丝袜高跟foot| 欧美一区二区视频在线观看2022| 美腿丝袜亚洲一区| 色婷婷亚洲综合| 日本在线不卡视频| 免费国产羞羞网站美图| 亚洲午夜精品久久久久久久久| 无码人妻精品一区二区中文| 中文字幕一区二区三区在线不卡| 亚洲天堂2024| 中文字幕国产精品一区二区| 女王人厕视频2ⅴk| 久久网站热最新地址| 97久久精品人人做人人爽| 欧美成人三级在线| 92精品国产成人观看免费| 精品日产卡一卡二卡麻豆| 不卡av免费在线观看| 日韩久久久精品| 99r国产精品| 久久老女人爱爱| 97中文字幕在线观看| 国产亚洲福利社区一区| 麻豆tv在线观看| 国产精品三级在线观看| 欧美大喷水吹潮合集在线观看| 亚洲国产成人在线| 真人bbbbbbbbb毛片| 亚洲同性gay激情无套| 精品人伦一区二区三电影| 亚洲精品伦理在线| 少妇视频一区二区| 麻豆国产欧美日韩综合精品二区| 欧美性xxxxxx少妇| 高清不卡一二三区| 26uuu亚洲| 香港三日本8a三级少妇三级99| 国产精品国产三级国产a | 精品国产伦一区二区三区观看体验 | 色综合亚洲欧洲| 激情综合五月天| 91精品国产一区二区三区香蕉| 99久久精品免费看| 国产精品天天看| 日韩毛片无码永久免费看| 午夜精品成人在线| 欧美性做爰猛烈叫床潮| 成人免费视频app| 久久久www免费人成精品| 91视频啊啊啊| 亚洲观看高清完整版在线观看| 色婷婷综合久久久久中文| 制服.丝袜.亚洲.中文.综合 | 久久久欧美精品sm网站| 中文乱码人妻一区二区三区视频| 夜夜爽夜夜爽精品视频| 欧洲猛交xxxx乱大交3| 国产精品自拍网站| 久久网站最新地址| 性欧美精品中出| 麻豆成人久久精品二区三区小说| 制服丝袜中文字幕亚洲| 国产乱国产乱老熟300部视频| 亚洲精品videosex极品| 一本色道亚洲精品aⅴ| 国产精品一区一区| 久久精品视频一区二区三区| caopeng视频| 麻豆91免费观看| 精品三级在线看| 成人免费无遮挡无码黄漫视频| 日韩vs国产vs欧美| 欧美一区二区人人喊爽| 丰满少妇xbxb毛片日本| 亚洲网友自拍偷拍| 欧美日韩精品专区| 欧美性生交xxxxx| 亚洲国产日韩综合久久精品| 欧美美女直播网站| 亚洲中文字幕无码一区| 天天综合网天天综合色| 日韩一区二区在线观看视频播放| 亚洲永久无码7777kkk| 六月婷婷色综合| 久久先锋影音av鲁色资源网| 少妇愉情理伦三级| 国产成a人无v码亚洲福利| 国产精品三级av| 日本道在线观看一区二区| 99国产欧美另类久久久精品| 亚洲精品国产成人久久av盗摄| 欧美三级电影在线看| 国产a级片视频| 日本午夜精品一区二区三区电影| 欧美不卡一区二区| 国产中年熟女高潮大集合| 国内不卡的二区三区中文字幕| 亚洲国产精品成人综合| 国产这里有精品| 日本天堂在线播放| 美女一区二区在线观看| 久久久久久影视| 黄色一级片中国| 日韩精品国产一区| 秋霞电影一区二区| 欧美国产一区视频在线观看| 色综合一区二区三区| 日本50路肥熟bbw| 精品一区二区三区在线播放| 中文字幕欧美日韩一区| 欧亚一区二区三区| 最近中文字幕无免费| 国产乱人伦偷精品视频免下载| 国产精品国产自产拍高清av王其| 欧美日韩在线亚洲一区蜜芽| 亚洲国产精品成人综合久久久| 国产一区二区伦理片| 亚洲男帅同性gay1069| 欧美二区三区的天堂| www.黄色在线| 91性感美女视频| 免费在线观看精品| 国产精品久久久久久久久搜平片| 精品视频一区二区不卡| 亚洲成人黄色av| 91色九色蝌蚪| 久久国产夜色精品鲁鲁99| 综合网在线视频| 欧美电影免费观看完整版| 日韩a级片在线观看| 久久一区二区电影| 高清国产一区二区| 亚洲一区av在线| 国产亚洲综合av| 欧美人牲a欧美精品| 在线免费看视频| 五月天丁香社区| 高清不卡一区二区在线| 日韩精品亚洲专区| 综合自拍亚洲综合图不卡区| 欧美va在线播放| 欧美综合在线视频| 中文字幕欧美激情极品| 黑森林av导航| 成人av手机在线观看| 久久成人免费电影| 亚洲国产综合人成综合网站| 欧美国产日韩一二三区|