<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 使用bytes和strings包 bytes 和 string 包有許多有用的函數以幫助使用者在字符串和字節類型之間進行處理和轉換。這些函數可用于創建多種通用 I/O 接口的緩沖區。 ### 準備 請參閱上一節,關于使用常見I/O接口的準備步驟。 ### 實踐 1. 創建buffer.go: ``` package bytestrings import ( "bytes" "io" "io/ioutil" ) // Buffer 演示了初始化字節緩沖區的一些技巧 // 實現了 io.Reader 接口 func Buffer(rawString string) *bytes.Buffer { // 將傳入的字符串轉換為字節數組 rawBytes := []byte(rawString) // 有很多方式使用字節數組或原始字符串建立緩沖區 var b = new(bytes.Buffer) b.Write(rawBytes) // 或者 b = bytes.NewBuffer(rawBytes) // 使用字符串建立字節數組 b = bytes.NewBufferString(rawString) return b } // ToString接收 io.Reader 并將其轉換為字符串返回 func toString(r io.Reader) (string, error) { b, err := ioutil.ReadAll(r) if err != nil { return "", err } return string(b), nil } ``` 2. 建立bytes.go,[Golang學習 - bufio 包](https://www.cnblogs.com/golove/p/3282667.html)對buffio解讀很完整,值得一讀: ``` package bytestrings import ( "bufio" "bytes" "fmt" ) // WorkWithBuffer 會使用創建自 Buffer 函數的字節緩沖區 func WorkWithBuffer() error { rawString := "it's easy to encode unicode into a byte array ??" b := Buffer(rawString) // 使用b.Bytes()可以快速從字節緩沖區獲取字節切片 // 使用b.String()可以快速從字節緩沖區獲取字符串 fmt.Println(b.String()) // 由于*bytes.Buffer類型的b實現了io Reader 我們可以使用常見的reader函數 s, err := toString(b) if err != nil { return err } fmt.Println(s) // 可以創建一個 bytes reader 它實現了 // io.Reader, io.ReaderAt, // io.WriterTo, io.Seeker, io.ByteScanner, and io.RuneScanner // 接口 reader := bytes.NewReader([]byte(rawString)) // 我們可以使用其創建 scanner 以允許使用緩存讀取和建立 token scanner := bufio.NewScanner(reader) scanner.Split(bufio.ScanWords) // 遍歷所有的掃描token for scanner.Scan() { fmt.Print(scanner.Text()) } return nil } ``` 3. 建立 string.go: ``` package bytestrings import ( "fmt" "io" "os" "strings" ) // SearchString 展示了一系列在字符串中進行查詢的方法 func SearchString() { s := "this is a test" // 返回 true 表明包含子串 fmt.Println(strings.Contains(s, "this")) // 返回 true 表明包含子串中的任何一字符a或b或c fmt.Println(strings.ContainsAny(s, "abc")) // 返回 true 表明以該子串開頭 fmt.Println(strings.HasPrefix(s, "this")) // 返回 true 表明以該子串結尾 fmt.Println(strings.HasSuffix(s, "test")) } // ModifyString 展示了一系列修改字符串的方法 func ModifyString() { s := "simple string" // 輸出 [simple string] fmt.Println(strings.Split(s, " ")) // 輸出 "Simple String" fmt.Println(strings.Title(s)) // 輸出 "simple string" 會移除頭部和尾部的空白 s = " simple string " fmt.Println(strings.TrimSpace(s)) } // StringReader 演示了如何快速創建一個字符串的io.Reader接口 func StringReader() { s := "simple string\n" r := strings.NewReader(s) // 在標準輸出上打印 s io.Copy(os.Stdout, r) } ``` 4. 建立main.go: ``` package main import "github.com/agtorre/go-cookbook/chapter1/bytestrings" func main() { err := bytestrings.WorkWithBuffer() if err != nil { panic(err) } // each of these print to stdout bytestrings.SearchString() bytestrings.ModifyString() bytestrings.StringReader() } ``` 5. 執行 go run main.go 6. 這會輸出(*<small>原文此處將心形顯示為亂碼,不過在譯者的win7 Go1.10.1環境下可以完整顯示出來</small>*): ``` it's easy to encode unicode into a byte array ?? it's easy to encode unicode into a byte array ?? it'seasytoencodeunicodeintoabytearray??true true true true [simple string] Simple String simple string simple string ``` ### 說明 bytes 包在處理數據時提供了許多便利功能。 例如,使用流處理庫或方法時,緩沖區比字節數組更靈活。一旦你創建了一個緩沖區,它可以用來滿足io.Reader接口,所以你可以利用ioutil包中的各種函數來操作數據。 對于流應用,你可能需要使用buffer 和 scanner,bufio包可以在這些情況下派上用場。 有時,使用數組或切片更適合較小的數據集,或者當你的計算機上有大量內存,無需考慮過多考慮時。 Go為這些基本類型的接口之間的轉換提供了很大的靈活性——在字符串和字節之間轉換相對簡單。使用字符串時,string包提供了許多方便的函數來搜索和處理字符串。在某些情況下,一個好的正則表達式可能是合適的,但大多數情況下,string和strconv包就足夠了。string包允許你將字符串標題化,將其拆分為數組或修剪空白,它還提供了一個可以用來代替bytes包讀取器類型的Reader接口。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看