go从txt文件读取数据逐行用空格完成切片,将切片中数据浮点数差值存入新切片
时间: 2023-08-05 08:17:47 浏览: 106
读取文件中每行的空格数
可以按照以下步骤实现从文本文件中读取数据,将每行数据按照空格切分成切片,然后计算相邻两个浮点数的差值,并存储到新的切片中:
```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
// 打开文件
file, err := os.Open("data.txt")
if err != nil {
panic(err)
}
defer file.Close()
// 读取文件内容
scanner := bufio.NewScanner(file)
var values []float64
for scanner.Scan() {
// 将每行数据按空格分割成切片
line := scanner.Text()
fields := strings.Fields(line)
// 将切片中的数据转换为浮点数
var nums []float64
for _, field := range fields {
num, err := strconv.ParseFloat(field, 64)
if err != nil {
panic(err)
}
nums = append(nums, num)
}
// 计算相邻两个浮点数的差值,并存储到新的切片中
for i := 1; i < len(nums); i++ {
diff := nums[i] - nums[i-1]
values = append(values, diff)
}
}
// 输出结果
fmt.Println(values)
}
```
在上面的代码中,我们使用 `os.Open` 函数打开文本文件,然后使用 `bufio.NewScanner` 函数创建一个扫描器,逐行读取文件内容。在每行数据被读取后,我们使用 `strings.Fields` 函数将其按照空格分割成切片。接着,我们遍历切片中的每个字段,将其转换为浮点数,并存储到新的切片中。最后,我们遍历新的切片,计算相邻两个浮点数的差值,并存储到另一个切片中。
阅读全文