簡體   English   中英

帶有多個括號的 Golang for 循環

[英]Golang for loop with multiple brackets

我偶然發現了這個存儲庫,

https://github.com/prometheus-community/jiralert/blob/a0f0e80e575e71cbf7db565d3296a3a984282dff/pkg/config/config_test.go#L148

for 循環有多個括號:

for _, test := range []struct {
        missingField string
        errorMessage string
    }{
        {"Name", "missing name for receiver"},
    (...)
    } {

        fields := removeFromStrSlice(mandatory, test.missingField)

    (...)
        }
        configErrorTestRunner(t, config, test.errorMessage)
    }

我在 go 文檔中找不到任何關於此的內容,這是什么構造?

第一個括號對是結構類型定義的一部分,其語法如下:

struct{
    field1 type1
    field2 type2
    ...
}

第二對是復合文字值的一部分,為該結構的切片創建一個值。 它的語法如下:

[]elementType{value1, value2, ...}

內部嵌入的括號是創建切片結構值的復合文字的一部分。 類型被省略(從切片類型中知道),因此每個{field1Value, fieldValue2...}都是一個結構值。

第三對定義for語句的塊。 for語句遍歷由上述復合文字定義的切片的元素。

清理代碼以提高可讀性和理解性。 你給的任何東西都相當於:

type TestStruct struct {
  missingField string
  errorMessage string
}

testCase := TestStruct {
  {
    missingField: "Name",
    errorMessage: "missing name for receiver",
  }
  (...)
}


for _, test := range(testCase) {

  fields := removeFromStrSlice(mandatory, test.missingField)
}

configErrorTestRunner(t, config, test.errorMessage)可能來自父測試函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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