Go slice和map初始化

摘要:slice初始化:golang未初始化的slice和初始化为空的slice的区别简析_zhang197093的博客-CSDN博客_golang 初始化slice

摘要:map初始化:

Golang中map的初始化及使用_冷月醉雪的博客-CSDN博客_go map 初始化

切片(slice)初始化:

// 定义未初始化的slice
var s1 []string

// 通过字面量形式定义并初始化为空slice
var s2 = []string{}

// 通过make函数定义并初始化为空slice
var s3 = make([]string, 0, 0)

fmt.Printf("s1: %p, s2: %p, s3: %p\n", s1, s2, s3)  //输出s1: 0x0, s2: 0x119f408, s3: 0x119f408  说明在golang中slice的底层就是指针,s1的值其实就是nil

// 插入数据
s1 = append(s1, "s1s1")
s2 = append(s2, "s2s2")
s3 = append(s3, "s3s3")
fmt.Println(s1, s2, s3) // [s1s1] [s2s2] [s3s3]

所以,在正常的使用过程中,如果无法预知slice的大小需要一个空的slice,使用s1的形式是没有问题的,而且能减少一次不必要的内存分配

map初始化:

// 定义未初始化的map, nil map不能赋值
var m1 map[int]string
// m1 = make(map[int]string, 0) // 初始化

// 通过字面量形式定义并初始化为空map
var m2 = map[int]string{}

// 通过make函数定义并初始化为空map
var m3 = make(map[int]string, 0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值