亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go Base64 包中的“StdEncoding”是什么

Go Base64 包中的“StdEncoding”是什么

Go
呼喚遠方 2022-01-10 17:00:02
我是一位經驗豐富的程序員,但剛開始工作,所以提前為我確信這是一個簡單的問題道歉。該站點上的base64 示例代碼goland.org包括以下代碼。package mainimport (    "encoding/base64"    "fmt")func main() {    msg := "Hello, 世界"    encoded := base64.StdEncoding.EncodeToString([]byte(msg))    fmt.Println(encoded)    decoded, err := base64.StdEncoding.DecodeString(encoded)    if err != nil {        fmt.Println("decode error:", err)        return    }    fmt.Println(string(decoded))}我可以毫無問題地復制和使用這段代碼,但作為一個新的 Go 程序員,我不明白以下幾行的那部分是做什么的StdEncoding decoded, err := base64.StdEncoding.DecodeString(encoded)我了解上述程序將encode/base64功能導入我的程序。但是,如果我查看文檔,base64 包包含以下類型和功能func NewDecoder(enc *Encoding, r io.Reader) io.Readerfunc NewEncoder(enc *Encoding, w io.Writer) io.WriteClosertype CorruptInputError    func (e CorruptInputError) Error() stringtype Encoding    func NewEncoding(encoder string) *Encoding    func (enc *Encoding) Decode(dst, src []byte) (n int, err error)    func (enc *Encoding) DecodeString(s string) ([]byte, error)    func (enc *Encoding) DecodedLen(n int) int    func (enc *Encoding) Encode(dst, src []byte)    func (enc *Encoding) EncodeToString(src []byte) string    func (enc *Encoding) EncodedLen(n int) int    func (enc Encoding) WithPadding(padding rune) *Encoding我希望看到一種類型StdEncoding——但我沒有StdEncoding在這個列表中看到任何提及。所以,我的直接問題是——什么是StdEncoding?我的更高級別的問題可能是——究竟是從模塊中導出什么以供該模塊的用戶使用,以及作為 go 用戶,我如何瀏覽這些導出的內容。如果您可以糾正任何不知情的濫用術語(如上面的模塊、導出、導入)并將它們放入 go 上下文中,則可以獲得獎勵積分。
查看完整描述

1 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

嘗試一次回答您的所有問題...您可以StdEncoding在文件 base64.go 中找到它的定義,它包含在此處;


65  // StdEncoding is the standard base64 encoding, as defined in

66  // RFC 4648.

67  var StdEncoding = NewEncoding(encodeStd)

并且在第 33 行上, const 被定義為這樣;


33  const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

因此,要回答您的主要問題,它只是 RFC 4648 中定義的 base64 編碼。類型是*Encoding,NewEncoding如果您愿意,您甚至可以在同一位置查看實現。https://golang.org/src/encoding/base64/base64.go


為了解決一些關于包/模塊和導出的輔助問題......在 go 文檔中,您將看到所有已導出的內容,并且沒有任何未導出的內容(如果您查看實際源代碼,您通常會發現很多未導出的輔助方法)。如果您查看源代碼,您可以在方法/類型/常量等名稱中看到這種區別?;疽巹t是,如果標識符以大寫字母開頭,則導出,如果是小寫,則不導出。


值得指出的另一件事是該語言是開源的。在文檔中,它通常會列出包主文件(可能還有其他文件),以便您打開并查看。你會發現代碼注釋很好,而且通常很容易理解。通常,您只需閱讀這些文件中的注釋即可找到有關內部工作方式的問題的答案。


查看完整回答
反對 回復 2022-01-10
  • 1 回答
  • 0 關注
  • 389 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號