首頁 > 後端開發 > Golang > go語言空白標識符是什麼

go語言空白標識符是什麼

青灯夜游
發布: 2023-01-31 17:15:55
原創
3577 人瀏覽過

在go語言中,空白標識符是未使用的值的佔位符,由下劃線「_」表示。空白標識符可以像其他標識符一樣用於變數的聲明或賦值(任何類型都可以賦值給它),但任何賦給這個標識符的值都將被拋棄,因此這些值不能在後續的程式碼中使用,也不可以使用“_”作為變數對其它變數進行賦值或運算。

go語言空白標識符是什麼

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

與 Python 一樣,Go 語言也有空白標識符。

什麼是空白標識符

空白標識符是未使用的值的佔位符。它由下劃線(_)表示。由於空白標識符沒有名稱,因此它們也被稱為匿名佔位符。

空白標識符可以像其他標識符一樣用於變數的聲明或賦值(任何類型都可以賦值給它),但任何賦給這個標識符的值都將被拋棄,因此這些值不能在後續的程式碼中使用,也不可以使用_作為變數對其它變數進行賦值或運算。

在 Go 語言中, 不允許宣告未使用的變數或匯入語句。也就是說,我們無法聲明變數並將其留下未使用。同樣,如果您匯入一個包,那麼也必須使用它。

這個時候就需要一個空白標識符。

未使用的賦值變數

如果Go 中的函數傳回多個值,則必須定義相等數量的變數來保存這些值。但是,如果您只需要其中一些值而不需要其他值,若某次賦值需要匹配多個左值,但其中某個變數不會被程式使用, 那麼用空白標識符來代替。此變數可避免建立無用的變量,並能清楚地表明該值將被丟棄。如下所示:

result, error = Dosomething()
if error {
   // handle error
}
登入後複製

在上面的程式碼中,result 與程式無關,而且後續程式碼也沒有使用它。如果編譯的話,Go 編譯器會報錯。

result declared but not used
登入後複製

在這種情況下,您可以將結果替換為下劃線或空白標識符,如下所示:

_, error = Dosomething()
if error {
   // handle error
}
登入後複製

即使您聲明了一個變量,您也可以稍後使用空白標識符來忽略它,如下面的程式碼所示:

product, error = Dosomething()
if error {
   // handle error
}
// ignore unused variable
_ = product
登入後複製

for...range 中使用空白標誌符

func Sum(numbers []int) int {

  sum := 0
  for _, number := range numbers {
    sum += number
  }
  return sum
}
登入後複製

未知的結構體

可以利用_ 分配任何東西:

var _ I = T{}
登入後複製

無法存取此變量,以便將從生成的程式中最佳化。但是,如果 T 類型未指派給介面 I ,則可能會導致編譯錯誤。因此,在這種情況下,它被用作關於類型的靜態斷言。

未使用的套件

在Go 中,如果你匯入一個包,那麼你必須使用它,否則會出現編譯器錯誤。

imported and not used “<package name>”
登入後複製

空白標識符可用來解決此編譯器錯誤。

有兩種方法可以使用空白標識符來解決未使用的套件錯誤,如下所示:

第一種:宣告一個全域空白標識符(在main() 函數之前),該標識符從未使用的套件中存取符號,例如下面程式碼中的Open:

import "os"
var _ = os.Open
func main() {
}
登入後複製

第二種:在未使用的套件前加上一個空白標識符,如下所示:

import _ "os"

func main(){
}
登入後複製

空白標識符透過避免在整個程式碼中使用未使用的變數聲明,使程式碼更具可讀性。

總結

Golang 中任何宣告但未使用的套件和變數都會引發錯誤。這個規則使得我們的程式碼保持乾淨和輕量。

• 有時如果需要在未來使用並提前導入一些軟體包,就可以使用空白標識符。

• 有時候函數會傳回多個參數,但是我們只需要使用其中一個變數的時候,就可以透過空白標誌符號來進行接收。

【相關推薦:Go影片教學程式設計教學

以上是go語言空白標識符是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板