2012-07-28 53 views
2

花了幾個小時試圖找到一個解決方案,以解決將一串數字轉換爲單個數字的數組整數到Go中的「簡單」問題。嘗試了許多不同的方法,但總是遇到問題。這是最後一次嘗試。它會建立,但會在運行時在指定的行上提供超出範圍的索引。可能會有幾個AH會讓我失望,因爲我會問愚蠢的問題,但是在多個Google搜索的前50個結果中我找不到解決方案。所以來吧,紀念我,你是男人。對其他99%:感謝您的耐心和幫助。將字符串轉換爲Go中的單個數字整數數組

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]) 
    } 
} 

回答

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]) 
    } 
}