golang string转换数组

elonlee · · 23038 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在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


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:elonlee

查看原文:golang string转换数组

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

23038 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传