为了账号安全,请及时绑定邮箱和手机立即绑定

slice和数组的区别,map的注意事项

标签:
PHP

一直在从事php开发的这块工作,发现有些同学总容易把slice和数据搞混,现把自己对这块的一些经验总结以及应用map时的一些注意事项和大家分享下,希望对大家的学习工作有所帮助。
array 固定长度的数组,使用前必须确定数组的长度
1,go中的数组是值类型
2,如果go中的数组作为函数的参数的话,实际是传递一份数组的拷贝。而不是数组的指针
3,数组的长度也是type的一部分,[10]int 和[20]int是不一样的

slice是可变长的,定义一个slice变量之后,不需要为它的容量而担心,你随时可以往slice里面加数据
var :=[]string{}
v=append(v,"hello")
注意:slice和array的写法很容易混淆
v :=[2]string{"str1","str2"} //这个是数组
m :=[]string{"str1","str2"} //这个是slice
写法上array有长度slice没有长度

slice是一个指针而不是值。
指针比值小很多,因此,我们将slice作为函数传递比数组传递更有性能。
slice是一个指针,它指向的是一个array结构,他们都有len和cap。

map结构
map结构跟php的array几乎一模一样,是一个key-value的hash结构,key可以是除了func类型,array,slice,map类型之外的类型。

map结构和slice是一样的,是一个指针赋值的时候是将指针复制给新的变量。
map 在使用之前必须用 make 来创建(不是 new);一个值为 nil 的 map 是空的,并且不能赋值。
       func main() {
        m = make(map[string]Vertex)
        m["Bell Labs"] = Vertex{
    40.68433, 74.39967,
        }
    fmt.Println(m["Bell Labs"])
        }
    for 循环的 range 格式可以对 slice 或者 map 进行迭代循环。
            for i, v := range pow {
            fmt.Printf("2**%d = %d\n", i, v)
    }
}
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
11
获赞与收藏
223

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消