为了账号安全,请及时绑定邮箱和手机立即绑定

从Go中解析文件中的矩阵

从Go中解析文件中的矩阵

Go
慕莱坞森 2021-05-06 10:11:06
我有一个包含以下内容的文件: 1  2  3  4  5 6  0  0  0  7 8  0  0  0  910  0  0  0 1112 13 14 15 16我想要的是的多维数组(或切片)[][]int。我试图摆弄scanner.Scanner图书馆:scan.Init(f) // f is a filescan.Whitespace = 1<<'\t' | 1<<'\r' | 1<<' 'tok := scan.Scan()for tok != scanner.EOF {    // do something with tok    if tok == scanner.String {        fmt.Print("\n")    } else if tok == scanner.Int {        // Handle int value        // How do I get the matched token value?    }           tok = scan.Scan()}我找不到一种方法来获取匹配的令牌的值。有两个问题:我如何获得任何已扫描令牌的价值?在知道二维切片/数组的确切大小之前,如何动态创建该二维切片/数组?(实际上可以是任何大小)
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我不会使用扫描程序包(适用于解析上下文无关的语法,类似于Go语言)来完成从文件中读取数字的简单任务。我要么使用:

在知道二维切片/数组的确切大小之前,如何动态创建该二维切片/数组?(实际上可以是任何大小)

你不能 读取文件两次以了解第二遍的确切大小,或者仅使用append动态调整切片的基础数组的大小。append()多次调用还会导致摊销O(n)行为,因此这不是问题。


查看完整回答
反对 回复 2021-05-10
?
墨色风雨

TA贡献1853条经验 获得超6个赞

广告1:Scanner.TokenText

广告2:简短-如果要从文本表示中推断出暗淡,请进行内部循环:附加到行切片(例如[] int),直到换行-> num of mx cols。外循环:将这些线段附加到[] [] int上,直到EOF->数量的mx行。


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信