代码之家  ›  专栏  ›  技术社区  ›  Yster

在Go中将字符串转换为个位数整数数组

  •  2
  • Yster  · 技术社区  · 14 年前

    花了几个小时试图找到将一串数字转换为个位数数组的“简单”问题的解决方案 整数 在Go中。尝试了许多不同的方法,但总是遇到问题。这是最后一个试过的。它生成了索引,但在运行时给出的索引超出了范围,如所示。可能会有一些AHs会因为我问了愚蠢的问题而把我记下来,但我在多次谷歌搜索的前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])
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Yster    14 年前

    答案如下。Morphiax用我的方式向我展示了错误。谢谢,伙计,谢谢。事实证明这是错误的:var force〔〕int。我应该在创建数组时给出大小,而不是在初始化数组时给出:var-intilt[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])
        }
    }