花了几个小时试图找到一个解决方案,解决在Go中将一串数字转换为单个数字整数数组的“简单”问题。尝试了许多不同的方法,但总是遇到问题。这是最后一个尝试过的。它构建,但在指定的行上,在运行时给出索引超出范围。可能会有一些AH会因为提出愚蠢的问题而让我失望,但我在多次Google搜索的前50个结果中找不到解决方案。所以来吧,伙计,让我失望,你是男人。对其他99%:感谢您的耐心和帮助。
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
s := "876567747896354336739443262"
var dstr []string = strings.SplitAfterN(s,"",len(s))
var dint []int
for i := 0; i < len(s); i++ {
dint[i], _ = strconv.Atoi(dstr[i]) //index out of range at runtime
fmt.Printf("dstr[%v] is: %s\n", i, dstr[i])
fmt.Printf("dint[%v] is: %v\n", i, dint[i])
}
}
答案 0 :(得分:2)
这是答案。 Morphiax以我的方式向我展示了错误。谢谢老兄,谢谢。事实证明这是错误的:var dint [] int。在创建数组时,我应该给出大小,当没有初始化时:var dint [27] int。这是完整的代码:
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
s := "876567747896354336739443262"
var dstr []string = strings.SplitAfterN(s,"",len(s))
var dint [27]int
for i := 0; i < len(s); i++ {
dint[i], _ = strconv.Atoi(dstr[i])
fmt.Printf("dstr[%v] is: %s\n", i, dstr[i])
fmt.Printf("dint[%v] is: %v\n", i, dint[i])
}
}