2017-04-13 84 views
3

我是很新,golang和偶然發現了這一點:Golang曖昧ERR定義

err := ipdf.Open(source) 
if err != nil { 
    panic("Couldn't open pdf.") 
} 

payload, err := ioutil.ReadFile(other) 
if err != nil { 
    panic("Couldn't read other file.") 
} 

爲什麼我允許定義ERR變量第二次?

回答

5

不同於常規變量聲明,一個短變量聲明可以重新聲明變量,只要它們最初先前在相同塊中聲明(或參數列表,如果該塊是功能體)具有相同的類型,並且至少一個非空白變量是新的。因此,重新宣佈只能出現在多變量的短期聲明中。重新申報不會引入新的變數;它只是爲原件分配一個新的值。

https://golang.org/ref/spec#Short_variable_declarations

0

短變量聲明主要使用時必須聲明臨時使用變量,這些變量名可以在進一步的程序也可以使用。例如,可以在進一步的程序中隨時使用「err」。 假設語言是java,你將不得不爲更多的程序聲明更多不同的變量名稱。 但在golang中,短變量聲明在javascript中用作「let」。 希望這有助於。

0

我會建議,儘可能多地,使用內聯檢查:

// local scope 
if err := ipdf.Open(source); err != nil { 
    panic("Couldn't open pdf.") 
} 

payload, err := ioutil.ReadFile(other) 
if err != nil { 
    panic("Couldn't read other file.") 
}