1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
在你的代碼中:
您正在創(chuàng)建一個(gè)新緩沖區(qū)并將其分配給buff,因?yàn)槟鷽]有為其提供任何輸入源,所以它是空的。
buff := new(bytes.Buffer)
并且NewDecoder正在從空讀取buff。就像 go 中的所有東西一樣,如果你想創(chuàng)建一個(gè)新的東西,你應(yīng)該使用它的構(gòu)造函數(shù),它總是以package.Newxxx
bytes.NewBuffer(src)
然后decoder是一個(gè)包含實(shí)際解碼數(shù)據(jù)的變量,它有一個(gè)reader interface(讀取方法)。reader interface因此,您可以將它傳遞給接受, 并且ioutil.ReadAll()是其中之一的方法。
在必要時(shí)添加評(píng)論:
package main
import (
"bytes"
"encoding/base64"
"fmt"
"io/ioutil"
"log"
)
// encoded data
var data = "eyJhY3Rpdml0aWVzIjpbXSwic3VjY2VzcyI6ZmFsc2UsImNvZGUiOjk5OTl9"
func main() {
dec, err := decode([]byte(data))
if err != nil {
log.Println(err)
}
fmt.Println(string(dec)) // print returned value
}
func decode(enc []byte) ([]byte, error) {
// create new buffer from enc
// you can also use bytes.NewBuffer(enc)
r := bytes.NewReader(enc)
// pass it to NewDecoder so that it can read data
dec := base64.NewDecoder(base64.StdEncoding, r)
// read decoded data from dec to res
res, err := ioutil.ReadAll(dec)
return res, err
}
事實(shí)上,整個(gè)事情可以寫在一行中:
func decode(enc []byte) ([]byte, error) {
return ioutil.ReadAll(base64.NewDecoder(base64.StdEncoding, bytes.NewReader(enc)))
}
輸出:
{"activities":[],"success":false,"code":9999}
- 1 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報(bào)