博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Third glance in Go
阅读量:5927 次
发布时间:2019-06-19

本文共 688 字,大约阅读时间需要 2 分钟。

在Go語言裏關於數組(Array),切片(Slice)和映射表(Map)的使用是非常常見的。有過其他語言編程背景的人會比較熟悉一下,但是也是因爲過於的熟悉,從而導致一個慣性思維,往往就會踢到“石頭”,我就是其中之一。先說數組問題:

其他的沒什麼,但是在傳遞數組指針到函數的時候,Go裏面是這樣的如果你想傳遞一個數組指針到函數裏,你必須明確給出數組的大小

func updateItem(arr *[]int) {    arr[2] = 1}func main() {    arr := new([10]int)    updateItem(arr)}

這樣是不行的,編譯時會給你報一個類型不匹配的錯誤,你必須這樣寫

func updateItem(arr *[10]int) {    arr[2] = 1}

 除了指針以外,你還可以使用切片來傳遞數組,只不過會變成這樣,不過這也是Go裏面常規的做法。

func updateItem(arr []int) {    arr[2] = 1}func main() {    arr := new([10]int)    updateItem(arr[:])}

 另外一个疑惑就是切片的长度与容量的定义,搞不清楚make([]int, 10, 50)后,如何去填充后40个内存空间的值? 原来是可以通过切片的扩容来对后40个空间进行访问。切片重新扩容必须以0开始,如

var slice1 = make([]int, 10, 50)slice1 = slice1[0:len(slice1) +1]

这样就给切片增加了一个空间。

转载地址:http://nohvx.baihongyu.com/

你可能感兴趣的文章
springMVC---级联属性
查看>>
get和post区别
查看>>
项目总结26:java调用webservice接口(asmx)
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
打造自己博客(wordpress)的wap手机版本
查看>>
Floodlight 在 ChannelPipeline 图
查看>>
leetcode-Word Ladder II
查看>>
VS2017调试闪退之Chrome
查看>>
做移动互联网App,你的测试用例足够吗?
查看>>
cmd.exe启动参数说明
查看>>
视图加载时自动执行铵钮事件
查看>>
私活利器,docker快速部署node.js应用
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
一站式解决,Android 拍照 图库的各种问题
查看>>
JavaScript匿名函数以及在循环中的匿名函数
查看>>
中国HBase技术社区第五届MeetUp ——HBase技术解析及应用实践(深圳站)
查看>>
lsof命令
查看>>
阿里云云计算ACP考试知识点(标红为重点)
查看>>
从零开始来看一下Java泛型的设计
查看>>