1 回答

TA貢獻1818條經(jīng)驗 獲得超3個贊
在你的代碼中:
您正在創(chuàng)建一個新緩沖區(qū)并將其分配給buff,因為您沒有為其提供任何輸入源,所以它是空的。
buff := new(bytes.Buffer)
并且NewDecoder正在從空讀取buff。就像 go 中的所有東西一樣,如果你想創(chuàng)建一個新的東西,你應(yīng)該使用它的構(gòu)造函數(shù),它總是以package.Newxxx
bytes.NewBuffer(src)
然后decoder是一個包含實際解碼數(shù)據(jù)的變量,它有一個reader interface(讀取方法)。reader interface因此,您可以將它傳遞給接受, 并且ioutil.ReadAll()是其中之一的方法。
在必要時添加評論:
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
}
事實上,整個事情可以寫在一行中:
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)注
- 266 瀏覽
添加回答
舉報