 
					喵喔喔
					如果结构始终相同并且您想要的只是 id 值,您可以执行以下操作(在 Playground 上):package mainimport (    "fmt"    "strings")func main() {    // This will work only if ids don't have spaces    fields := strings.Fields(input1)    for i, field := range fields {        if field == "id:" {            fmt.Println("Got an id: ", fields[i+1][1:len(fields[i+1])-1])        }    }    fmt.Println()    // This will extract all strings enclosed in ""    for i1, i2 := 0, 0;; {        i := strings.Index(input2[i1:], "\"") // find the first " starting after the last match        if i > 0 { // if we found one carry on            i1 = i + 1 + i1 // set the start index to the absolute position in the string            i2 = strings.Index(input2[i1:], "\"") // find the second "            fmt.Println(input2[i1 : i1+i2]) // print the string between ""            i1 += i2 + 1 // set the new starting index to after the last match        } else { // otherwise we are done            break        }    }    // Reading the text line by line and only processing port sections    parts := []string{"port{", "  Entry {", "      id: \"foo bar\"", "  }", "   Entry {", "      id: \"more foo bar\"", "  }", "}"}            isPortSection := false    for _, part := range parts {        if string.HasPrefix(part, "port"){            isPortSection = true        }        if string.HasPrefix(part, "host"){            isPortSection = false        }        if isPortSection && strings.HasPrefix(strings.TrimSpace(part),"id:") {            line := strings.TrimSpace(part)            fmt.Println(line[5:len(line)-1])        }    }}var input1 string = `port{  Entry {      id: "foo"  }   Entry {      id: "bar"  }}`var input2 string = `port{  Entry {      id: "foo bar"  }   Entry {      id: "more foo bar"  }}`印刷:Got an id:  fooGot an id:  barfoo barmore foo bar您可以将它们粘贴到切片或地图中,或者做任何您想做/需要做的事情,而不是在循环中打印它们。当然,而不是使用您在文件行中读取的字符串文字。