GO语言切片定义方法你都会吗

 //切片是一个拥有相同类型元素的可变长度的动态数组,支持自动扩容(动态数组),与数组很相似,只是长度可变,可追加元素
    //切片它的内部结构包含地址,长度,容量,切片一般用于快速地操作一块数据集合
    //切片的长度就是它已包含的元素个数,容量就是没扩容之前能放元素的个数
    //我们可以用len()方法来得到切片的长度、用cap()方法来得到切片的容量。

package main

import "fmt"

func main() {
	

	//声明方法一
	var a []string               //声明一个字符串切片,但没有初始化,没有底层数组,在内存中不存在,==nil,是空
	var b = []int{0, 1, 2, 3, 4} //声明整型切片并初始化,长度,容量均是5
	fmt.Println(b, len(b), cap(b))
	var c = []bool{true, false} //声明bool型切片

	fmt.Println(a, b, c)

	//方法二:基于数组定义切片
	//如果从索引0 开始切片,那么容量是不会产生变化的
	//如果从其他索引开始切片的话那么他的容量是起始位到结束位的个数, 那么它底层数组的容量将会改变,引用地址就会发生变化
	array1 := [5]int{55, 56, 57, 58, 59} //这是数组
	array2 := array1[1:4]                //基于数组array1创建切片,包含元素a[1],a[2],a[3],容量4
	fmt.Println(array2, len(array2), cap(array2))
	fmt.Printf("type of array2:%T\n", array2)

	//方法三,切片再次得到切片
	array3 := array2[1:]
	fmt.Println(array3, cap(array3)) //容量3

	//方法4:make函数构造切片
	slice1 := make([]int, 5, 10) //int类型切片,给定长度是5,容量是10
	fmt.Println(slice1, len(slice1), cap(slice1))
	fmt.Printf("%T\n", slice1)

}

 这是运行结果呢:

[0 1 2 3 4] 5 5
[] [0 1 2 3 4] [true false]
[56 57 58] 3 4
type of array2:[]int       
[57 58] 3
[0 0 0 0 0] 5 10
[]int

路还很长,但坚持一定能看到风光,我坚信读书能带来富足,如果你没有,那就是你读的还不够多

一定要加油!!!

 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

76博ding

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值