第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Golang抱怨for循環(huán)中未使用的變量

Golang抱怨for循環(huán)中未使用的變量

Go
富國滬深 2022-10-10 19:34:18
我在 golang 的 for 循環(huán)中有一個未使用的變量。我實際上是在 for 循環(huán)之外使用它。Goland 一直抱怨未使用的變量。我該如何解決?var backoffSchedule = []time.Duration{    1 * time.Second,    3 * time.Second,    10 * time.Second,}var response *http.Responsefor _, backoff := range backoffSchedule {    response, err := client.Do(request)    if err == nil {        break    }    fmt.Printf(os.Stderr, "Request error: %s", err)    fmt.Printf(os.Stderr, "Retrying in %s", backoff)    time.Sleep(backoff)}if err != nil {    fmt.Printf("CRITICAL: API request failed: %s", err)    os.Exit(2)}if response.StatusCode <= 199 || response.StatusCode >= 300 {    // Non-successful response, alert    fmt.Printf("CRITICAL: APIv request returned not ok: %s", response.Status)    os.Exit(2)它還抱怨未引用的變量err。如何使它們在函數(shù)內(nèi)可用。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

您有兩個名為 的變量response,一個在循環(huán)內(nèi),另一個在循環(huán)外。


這是一個演示相同問題的示例。


package main


import (

    "fmt"

)


func foo() (int, error) {

    return 10, nil

}


func main() {

    someValue := 5

    

    if (someValue == 5) {

        someValue, err := foo()

        if (err == nil) {

            fmt.Println("Inside if scope:", someValue)

        }

    }

    

    fmt.Print("Outside if scope:", someValue)

}

這里的問題是您正在使用:=,默認情況下會創(chuàng)建一個新變量。


如果您err在范圍之外聲明并使用=您的代碼將起作用。


package main


import (

    "fmt"

)


func foo() (int, error) {

    return 10, nil

}


func main() {

    someValue := 5

    var err error

    

    if (someValue == 5) {

        someValue, err = foo()

        if (err == nil) {

            fmt.Println("Inside if scope:", someValue)

        }

    }

    

    fmt.Print("Outside if scope:", someValue)

}

關(guān)于 go 行為方式的另一個注意事項是,如果您與已經(jīng)存在的變量處于相同的范圍內(nèi),那么它的工作方式會有所不同。


package main


import (

    "fmt"

)


func foo() (int, error) {

    return 10, nil

}


func main() {

    someValue := 5

    

    fmt.Println("Before foo:", someValue)

    

    someValue, err := foo()

    if (err == nil) {

        fmt.Print("After foo:", someValue)

    }

}

在這里,我們分配給相同的變量并同時someValue聲明一個新變量。err:=


查看完整回答
反對 回復(fù) 2022-10-10
?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

使錯誤消失的一種方法是err在循環(huán)外聲明一個變量:

var err error

這樣,您可以在循環(huán)內(nèi)分配現(xiàn)有變量(而不是聲明新變量)

for _, backoff := range backoffSchedule {
    response, err = client.Do(request)
                 ^^^

確保這是您想要的,就像response在循環(huán)之外,循環(huán)中分配的最后一個值一樣。


查看完整回答
反對 回復(fù) 2022-10-10
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

為了檢測錯誤,也許您也可以為response變量添加一個 nil 檢查。這可能是您的解決方案。對于等式。


if response== nil {

    break

}

請分享您對這種情況的首選或發(fā)現(xiàn)的答案。


查看完整回答
反對 回復(fù) 2022-10-10
  • 3 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號