破了。首先了解扫描并确保其正常工作:
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
`
这是操场上的代码。