golang string轉換數組


在golang中, 有數組和切片兩種類型. 切片是引用類型,而數組是值類型.  如果想在函數中傳入數組的指針參數, 則必須指定數組的數量, 如

func stringToRuneArr(s string, arr *[5]rune)    
如果去掉 arr *[5]rune 中的5, 則指參數變成了切片類型, 數組的指針就傳不進去了, 編譯會報錯, 那么難道一定要寫死數組的長度嗎? 這樣也太不優雅.
 
經過一番搜索, 發現其實方法很簡單, 就是把函數的參數改為切片, 然后傳數組的切片進去.   因為切片是引用類型, 實際在函數中的修改是對應的原來的數組, 這樣就達到了修改數組的目的,  只要修改不超出數組的長度,就沒有問題. 
 
代碼例子如下:
func StringToRuneArr(s string, arr []rune) {
    src := []rune(s)
    for i, v := range src {
        if i >= len(arr) {
            break
        }
        arr[i] = v
    }
}

func main(){
    str := "這是一個字符串ABCDEF"
    var arr [10]rune
    utility.StringToRuneArr(str, arr[:])
    fmt.Println(string(arr[:]))
}

輸出結果   這是一個字符串ABC


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM