簡體   English   中英

在Golang中,無法從int64轉換為字符串,然后進行切片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM