破了。首先了解扫描并确保其正常工作:


package main


import (

    "bufio"

    "fmt"

    "strings"

)


func main() {

    scanner := bufio.NewScanner(strings.NewReader(data))

    for scanner.Scan() {

        l := scanner.Text()

        fmt.Println(l)


    }


}


var data = `

Name = "John"

Surname = "Smith"

Val1 = 700

Val2 = 800


Name = "Pete"

Surname = "Jones"

Val1 = 555

Val2 = 666

Val3 = 444

`

这是Go Playground 上的代码。


接下来,将您需要的数据收集到一个切片中。可能有一种方法可以检查文件结尾 EOF,但我找不到它。这就是我想出的并且有效:


package main


import (

    "bufio"

    "fmt"

    "strings"

)


func main() {

    buffer := [][]string{}

    block := []string{}

    scanner := bufio.NewScanner(strings.NewReader(data))

    for scanner.Scan() {

        l := scanner.Text()


        if len(l) != 0 {

            block = append(block, l)

            continue

        }


        if len(l) == 0 && len(block) != 0 {

            buffer = append(buffer, block)

            block = []string{}

            continue

        }


        if len(l) == 0 {

            block = []string{}

            continue

        }


    }


    if len(block) != 0 {

        buffer = append(buffer, block)

        block = []string{}

    }


    fmt.Println("PRINTING BUFFER - END OF PROGRAM - ALL DATA PROCESSED:", buffer)


}


var data = `

Name = "John"

Surname = "Smith"

Val1 = 700

Val2 = 800


Name = "Pete"

Surname = "Jones"

Val1 = 555

Val2 = 666

Val3 = 444

`

这是操场上的代码。