博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
slice进阶
阅读量:4364 次
发布时间:2019-06-07

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

package mainimport (	"fmt"	"reflect"	"errors")/*使用append函数增加slice元素slice可以实现栈注意:1.超过slice容量后,会为底层函数重新开辟更大内存空间2.开辟新的内存空间,需手动更新slice的指针 */func main()  {	//append	myslice := make([]int, 1, 1)	for i := 0 ; i < 10 ; i++ {		//更新slice		myslice = append(myslice, i + 1)		fmt.Println(i,": 当前容量为", cap(myslice), myslice)	}	/*	0 : 当前容量为 2 [0 1]	1 : 当前容量为 4 [0 1 2]	2 : 当前容量为 4 [0 1 2 3]	3 : 当前容量为 8 [0 1 2 3 4]	4 : 当前容量为 8 [0 1 2 3 4 5]	5 : 当前容量为 8 [0 1 2 3 4 5 6]	6 : 当前容量为 8 [0 1 2 3 4 5 6 7]	7 : 当前容量为 16 [0 1 2 3 4 5 6 7 8]	8 : 当前容量为 16 [0 1 2 3 4 5 6 7 8 9]	9 : 当前容量为 16 [0 1 2 3 4 5 6 7 8 9 10]	 */	//rune实质为int32 byte实质为uint8	myrunes := []rune("你好")	mybytes := []byte("世界")	fmt.Println(reflect.TypeOf(myrunes), reflect.TypeOf(mybytes))	//stack	mys := stackint{}	//入栈	for i := 0; i < 10 ; i++ {		mys.stackPush(i)	}	mys.showMystack()	//出栈	for i := 0; i < 11 ; i++ {		mys.stackPop()	}	mys.showMystack()	//入栈	for i := 0; i < 10 ; i++ {		mys.stackPush(i)	}	mys.showMystack()}type stackint struct {	s []int}//入栈func (mystack *stackint)stackPush(x int)  {	mystack.s = append(mystack.s, x)}//出栈func (mystack *stackint)stackPop() (int,error) {	if len(mystack.s) != 0 {		tempint := mystack.s[len(mystack.s) - 1]		mystack.s = mystack.s[:len(mystack.s) - 1]		return tempint, nil	} else {		return 0, errors.New("栈为空")	}}func (mystack *stackint)showMystack() {	fmt.Println(mystack.s)}

 

转载于:https://www.cnblogs.com/zbhbc/p/9209585.html

你可能感兴趣的文章
最佳实践 | OceanBase事务引擎的技术创新
查看>>
unity中开启和关闭协同程序
查看>>
hdu_2089_不要62(数位DP)
查看>>
red and black(BFS)
查看>>
887. Super Egg Drop
查看>>
Properties类加载属性文件
查看>>
堆和栈&值类型和引用类型&拆箱和装箱
查看>>
HTML5外包团队:HTML5 Canvas使用教程
查看>>
内核调试日志打印宏
查看>>
C语言中格式化输出,四舍五入类型问题
查看>>
ListView
查看>>
WPF浏览器应用程序与JS的互调用(不用WebBrowser)
查看>>
bzoj2820: YY的GCD
查看>>
链表后续完善(一)
查看>>
Netsharp快速入门(之13) 销售管理(单据流转 销售订单生成发货单)
查看>>
郑州大学2018新生训练赛第十场题解
查看>>
相关子查询和嵌套子查询
查看>>
Oracle分析函数入门
查看>>
线段拟合(带拉格朗日乘子,HGL)
查看>>
oracle数据库服务介绍
查看>>