2

Goで数字の文字列を1桁の整数の配列に変換するという「単純な」問題の解決策を見つけるために、数時間を費やしました。多くの異なるアプローチを試しましたが、常に問題が発生しました。これが最後に試したものです。ビルドしますが、指定された行で実行時に範囲外のインデックスを提供します。愚かな質問をすることで私をマークダウンする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])
    }
}
4

1 に答える 1

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])
    }
}
于 2012-08-01T16:34:14.857 に答える