我有以下测试打印原始输入切片(过滤后),没有已删除的元素,但最后有一个额外的元素使输入切片具有相同的长度,即使过滤后它应该是更短。
我怎样才能避免有一个“输出切片”?(以正确的方式打印,包含正确的元素,具有预期的长度和容量)
为什么我尝试“删除就地”导致“输入切片”的长度与过滤过程之前的长度相同?
为什么“输入切片”的长度与我应用过滤过程之前的长度相同?如何进行删除操作以更改“输入切片”的长度?
这是代码:
这是测试执行的输出:
$ go test -v -run TestFoo
=== RUN TestFoo
Original (PRE) slice
[{1 FooCat 6.046602879796196} {2 FooCat 9.405090880450125} {3 FooCat 6.645600532184904}]
3
4
2019/05/31 12:53:30 Loop ID 0
Original (POST) slice
[{2 FooCat 9.405090880450125} {3 FooCat 6.645600532184904} {3 FooCat 6.645600532184904}]
3
4
Filtered element
{1 FooCat 6.046602879796196}
Output slice
[{2 FooCat 9.405090880450125} {3 FooCat 6.645600532184904}]
2
4
--- PASS: TestFoo (0.00s)
PASS
ok git.openenergi.net/scm/flex/service/common 0.008s
更新“作为指针的输入切片”
好的,假设我想处理原始输入切片,即没有副本或输出切片。
为什么以下代码在注释的代码行中引发运行时恐慌?( pointedInSl[inLen-1] = FooItem{}
)
为什么打印的切片(应用函数后)在其末尾包含 2 个相同的项目?如何删除最后一个冗余元素?
为什么应用函数后切片的长度仍然与应用函数前的切片长度相同?
如何使原始切片缩小 1(即输出长度 = 原始长度 - 1)?
慕田峪7331174
德玛西亚99
相关分类