Go【No-nil】区别

本文详细介绍了Go语言中`for...range`循环遍历数组、切片和映射的用法,以及`make`函数在创建切片、映射时的区别。同时,讨论了值类型与引用类型的概念,强调它们在内存分配和使用上的差异。此外,还对比了`new`与`make`函数在为不同类型分配内存时的不同。
摘要由CSDN通过智能技术生成

区别

for…range

遍历 数组和切片

for index, value := range array {
    ...
}

for index, value := range slice {
    ...
}

for index, value := range iterable {
    ...
}

for index := range array {
    ...
}

for index := range slice {
    ...
}

for index := range iterable {
    ...
}

遍历 map

for k, v := range Amap {
    ...
}

for k := range Amap {
    ...
}

for _, v := range Amap {
    ...
}

make

创建一个切片:
make([]T, len, cap)
创建一个map切片:
make([]map[keyT]valT, cap)
创建一个map:
make(map[keyT]valT, cap)

值类型和引用类型

值类型:int系列、float系列、bool、string、数组、结构体、指针
引用类型:slice 切片、channel 管道、interface 接口、map 映射、函数等

  • 值类型的特点是:变量直接存储值,内存通常在栈中分配

  • 引用类型的特点是:变量存储的是一个地址,这个地址对应的空间里才是真正存储的值,内存通常在堆中分配

new 和 make 的区别

  • new 返回的是指针make 返回的是类型本身
  • new 可以给所有类型的指针开辟空间make 只能用于 slice、map、chan初始化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TCP404

老板大方~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值