<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國際加速解決方案。 廣告
                ## 對Go數據編碼和解碼 除了JSON,TOML和YAML之外,Go還具有許多其他編碼類型。這些類型主要用于在Go進程之間傳輸數據,例如協議和RPC,或者在某些字符格式受限制的情況下。 本節將探討編碼和解碼gob格式和base64。后續章節將探討GRPC等協議。 ### 實踐 1. 創建gob.go: ``` package encoding import ( "bytes" "encoding/gob" "fmt" ) type pos struct { X int Y int Object string } // GobExample展示了如何使用gob包 func GobExample() error { buffer := bytes.Buffer{} p := pos{ X: 10, Y: 15, Object: "wrench", } // 注意如果p是個接口我們需要先調用gob.Register e := gob.NewEncoder(&buffer) if err := e.Encode(&p); err != nil { return err } // 這里是二進制的 所以打印出來的長度可能并不準確 fmt.Println("Gob Encoded valued length: ", len(buffer.Bytes())) p2 := pos{} d := gob.NewDecoder(&buffer) if err := d.Decode(&p2); err != nil { return err } fmt.Println("Gob Decode value: ", p2) return nil } ``` 2. 創建base64.go: ``` package encoding import ( "bytes" "encoding/base64" "fmt" "io/ioutil" ) // Base64Example 演示了如何使用 base64 包 func Base64Example() error { // base64對于不支持以字節/字符串操作的二進制格式的情況很有用 // 使用輔助函數和URL編碼 value := base64.URLEncoding.EncodeToString([]byte("encoding some data!")) fmt.Println("With EncodeToString and URLEncoding: ", value) // 解碼 decoded, err := base64.URLEncoding.DecodeString(value) if err != nil { return err } fmt.Println("With DecodeToString and URLEncoding: ", string(decoded)) return nil } // Base64ExampleEncoder 與上面的函數類似 但并沒有使用URL編碼 func Base64ExampleEncoder() error { buffer := bytes.Buffer{} // 建立編碼器 encoder := base64.NewEncoder(base64.StdEncoding, &buffer) // 確認關閉 if err := encoder.Close(); err != nil { return err } if _, err := encoder.Write([]byte("encoding some other data")); err != nil { return err } fmt.Println("Using encoder and StdEncoding: ", buffer.String()) decoder := base64.NewDecoder(base64.StdEncoding, &buffer) results, err := ioutil.ReadAll(decoder) if err != nil { return err } fmt.Println("Using decoder and StdEncoding: ", string(results)) return nil } ``` 3. 建立main.go: ``` package main import ( "github.com/agtorre/go-cookbook/chapter3/encoding" ) func main() { if err := encoding.Base64Example(); err != nil { panic(err) } if err := encoding.Base64ExampleEncoder(); err != nil { panic(err) } if err := encoding.GobExample(); err != nil { panic(err) } } ``` 4. 這會輸出: ``` With EncodeToString and URLEncoding: ZW5jb2Rpbmcgc29tZSBkYXRhIQ== With DecodeToString and URLEncoding: encoding some data! Using encoder and StdEncoding: ZW5jb2Rpbmcgc29tZSBvdGhlciBkYXRh Using decoder and StdEncoding: encoding some other data Gob Encoded valued length: 57 Gob Decode value: {10 15 wrench} ``` ### 說明 Gob編碼是一種使用Go數據類型構建的流格式。在連續發送和編碼時效率最高。對于單個項目,其他編碼格式(如JSON)可能更高效且易于移植。使用gob編碼使得編組大型復雜結構并在單獨的過程中重建它們變得簡單。雖然這里沒有顯示,但gob也可以使用自定義MarshalBinary和UnmarshalBinary方法對自定義類型或未導出類型進行操作。 Base64編碼對于通過GET請求中的URL進行通信或生成二進制數據的字符串表示編碼非常有用。大多數語言都支持這種格式,并在另一端解碼數據。因此,在不支持JSON格式的情況下,對JSON等內容進行Base64編碼是很常見的。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 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>

                              哎呀哎呀视频在线观看