[英]In Golang, transformation from int64 to string and then slice doesn't work
我在從API接收到gzip壓縮響應的客戶端上具有以下代碼:
client := &http.Client{}
response, _ := client.Do(r)
// Check that the server actual sent compressed data
var reader io.ReadCloser
switch response.Header.Get("Content-Encoding") {
case "gzip":
reader, err := gzip.NewReader(response.Body)
if err != nil {
log.Fatal(err)
}
defer reader.Close()
default:
reader = response.Body
}
token, err := io.Copy(os.Stdout, reader)
if err != nil {
log.Fatal(err)
}
cadenita := strconv.FormatInt(token, 10)
fmt.Println(cadenita)
cadena := "code=b2cc1793-cb7a-ea8d-3c82-766557"
fmt.Println(cadena[5:])
但是,如果我直接在cadenita上使用[5:],盡管它也是一個字符串,但我會遇到此錯誤。
我希望能夠對轉換為字符串的token(int64)進行切片和正則表達式。 我該怎么辦?
io.Copy返回復制的字節數,因此這是令牌變量中的多數民眾贊成值,因此對於本示例來說,該值在40左右。 FormatInt將其轉換為僅包含2個字符的字符串“ 40”,因此,當您要求以“ 40”的字符5開始的子字符串時,它將出現錯誤。
您是否正在嘗試獲取令牌中的實際響應數據? 如果是這樣,則需要將其復制到緩沖區中,例如
buff := bytes.Buffer{}
_, err := io.Copy(&buff, reader)
if err != nil {
log.Fatal(err)
}
fmt.Println(buff.String()[5:])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.