type MyObject struct {
X
int
}
var sink MyObjectfunc BenchmarkGo1(b *testing.B) {
for i := 0; ib.N; i++ {
var s Stack
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink = s.Peek().(MyObject)
}
}
func BenchmarkGo2(b *testing.B) {
for i := 0; ib.N; i++ {
var s Stack(MyObject)
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink = s.Peek()
}
}
结果:
BenchmarkGo1BenchmarkGo1-161283752887.0 ns/op48 B/op2 allocs/opBenchmarkGo2BenchmarkGo2-162840647941.9 ns/op24 B/op2 allocs/op
在这种情况下 , 我们分配更少的内存,同时泛型的速度是非泛型的两倍 。
合约(Contracts)
上面的堆栈示例适用于任何类型 。但是,在许多情况下,你需要编写仅适用于具有某些特征的类型的代码 。例如,你可能希望堆栈要求类型实现 String() 函数
golang一行代码把array/slice转成逗号分隔的字符串主要用在 SQL中 IN 条件查询的时候go语言清空slice,这个就非常有用go语言清空slice了 。
当然还有另外的方法,如下:
如将var a = []int{1,2,3,4}变为"[1,2,3,4]" 。
最硬核的办法就是建一个slice的临时中转:[]string 类型, 然后用strings.Join():
另一个比较简便的方法json.Marshal():
完毕!
关于go语言清空slice和go语言切片删除元素的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 几个截图怎么变成pdf,截图多张怎么能拼成一张
- js数据存本地文件,js数据存本地文件怎么存
- 好玩的解谜益智游戏,好玩的解谜益智游戏大全
- linux基础的命令,linux基本命令总结
- vb.net像素转换 vbnet imagelist
- 深圳go语言区块链课,go语言区块链开发实战
- html代码边框居中,html 边框
- ppt怎么吸引客户,ppt如何吸引人
- php高并发处理数据 php高并发三种解决方法