golang講解(go語言)標準庫分析之strings結束篇

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

今天我們完結了這個strings的包,其實我們就剩下了type Reader和type Replacer這個我們之間講過io的包,這樣大家理解起來就比較省勁了!

(1)func NewReader(s string) *Reader通過讀取一個字串之後返回Reader對象,然後實現io.Reader, io.ReaderAt, io.Seeker, io.ByteScanner, 和io.RuneScanner 介面

import (    "fmt"    "reflect"    "strings")func main() {    reader := strings.NewReader("widuu web")    fmt.Println(reflect.TypeOf(reader)) //*strings.Reader    fmt.Println(reader.Len())           //9}

(2)func (r *Reader) Len() int這個函數很簡單就是實現上邊的介面的讀取的字串的數,上邊已經寫了,哈哈這裡就省了哈

(3)func (r *Reader) Read(b []byte) (n int, err error),讀取資料到b中,返回讀取的實際大小n,如果出錯返回err,例如EOF或者b的長度為0

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu web")    n, err := reader.Read(make([]byte, 10))    if err != nil {        fmt.Println(err)    }    fmt.Println(n) //10}

(4)func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)這個跟我們前邊寫的是一樣的都是根據位移量來讀取資料的

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu web")    b := make([]byte, 10)    n, err := reader.ReadAt(b, 2)    if err != nil {        fmt.Println(err)    }    fmt.Println(string(b[:n])) //llo widuu}

(5)func (r *Reader) ReadByte() (b byte, err error),這個估計我都不用說大家都知道就是讀取一個byte資料,然後返回的直接就是byte

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu web")    data, err := reader.ReadByte()    if err == nil {        fmt.Println(string(data))        return    }    fmt.Println(err) //返回一個位元組h}

(6)func (r *Reader) ReadRune() (ch rune, size int, err error)這個同上只不過返回的是一個rune類型的

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu web")    r, n, err := reader.ReadRune()    if err != nil {        fmt.Println(err)    }    fmt.Println(string(r), n) //h,1}

(7)func (r *Reader) Seek(offset int64, whence int) (int64, error)根據whence來移動offset,改變指標的

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu")    b := make([]byte, 8)    n, _ := reader.Read(b)    fmt.Println(string(b[:n])) //hello wi 這個時候沒有讀到要讀d    reader.Seek(2, 1)          //這個時候我們在讀取位置 位移2    n1, _ := reader.Read(b)    fmt.Println(string(b[:n1])) //u}

(8)func (r *Reader) UnreadByte() error當前讀取的位置向前移一個byte

import (    "fmt"    "strings")func main() {    reader := strings.NewReader("hello widuu")    b := make([]byte, 8)    n, _ := reader.Read(b)    fmt.Println(string(b[:n])) //hello wi 這個時候沒有讀到要讀d    reader.Seek(2, 1)          //這個時候我們在讀取位置 位移2    reader.UnreadByte()        //然後向前位移1位元組    n1, _ := reader.Read(b)    fmt.Println(string(b[:n1])) //uu}

(9)func (r *Reader) UnreadRune() error這個一樣只不過類型變了而已,參照上邊的

(10)func (r *Reader) WriteTo(w io.Writer) (n int64, err error)這個借口主要繼承了io.Write的功能所以我們可以這樣做

import (    "fmt"    "os"    "strings")func main() {    reader := strings.NewReader("hello widuu")    w, _ := os.Create("test.txt")    defer w.Close()    n, err := reader.WriteTo(w)    if err != nil {        fmt.Println(err)    }    fmt.Println(n) //11}

(11)func NewReplacer(oldnew ...string) *Replacer NewReplacer從列表中返回一個新的替換後的字串,oldnew是slice

import (    "fmt"    "strings")func main() {    r := strings.NewReplacer("<", "&lt;", ">", "&gt;")    fmt.Println(r.Replace("This is <b>HTML</b>!")) //This is &lt;b&gt;HTML&lt;/b&gt;!}

(2)func (r *Replacer) Replace(s string) string這個上邊已經寫出函數了,就是對字串進行替換,大家可以參考上邊的程式

(3)func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)函數講字串替換後,然後寫入w中

import (    "fmt"    "io/ioutil"    "os"    "strings")func main() {    r := strings.NewReplacer("<", "&lt;", ">", "&gt;")    w, _ := os.OpenFile("test1.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)    defer w.Close()    n, err := r.WriteString(w, "This is <b>HTML</b>!")    if err != nil {        fmt.Println(err)    }    fmt.Println(n)    d, _ := ioutil.ReadFile("test1.txt") //32    fmt.Println(string(d))               //This is &lt;b&gt;HTML&lt;/b&gt;!}

每天只講一點golang的標準庫,方便大家學習和使用,更多的時候去理解標準庫,大家多動手,如果你喜歡請繼續關注我們

github https://github.com/widuu/gopkg

Golang標準庫

未經允許,不得轉載本站任何文章:微度網路 » golang講解(go語言)標準庫分析之strings結束篇

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.