go - 调试模式下的奇怪切片模式 - Go 和 Visual Studio 代码
问题描述
所以这并不是什么大问题,因为我最终得到了我想要的结果,但我想知道当我在 Visual Studio 代码中使用调试器时,是否有人知道为什么我的切片会经历来回模式。
这是我所拥有的:
partialKey := code + id + service
state:="CA"
clientId := "test"
var combo = []string{partialKey + clientId + state,
partialKey + clientId + util.Constants.DEFAULT_STATE
partialKey + util.Constants.DEFAULT_ID + state,
partialKey + util.Constants.DEFAULT_ID + util.Constants.DEFAULT_STATE,
}
当我调试代码并单击跳过按钮时,它会从切片的第一行开始执行这种奇怪的模式(var combo =...所以我将调用该 line1,最后一行将是 line4)。线路1 线路2 线路1 线路2 线路3 线路2 线路3 线路4 线路3 线路4
然后在那之后我得到了具有正确格式的预期四项切片,所以这不是一个真正的问题,但我只是好奇这是否是一个 Go 的事情或者这是由 Visual Studio 代码调试器引起的,有人可以告诉我为什么一个或另一个这样做?
解决方案
这是 delve 调试器在这种数组声明中的行为。
发生的情况是,数组中的每个项目都需要在插入数组之前进行构造。因此,当跨过调试器时,会在每个表达式处停止。
var combo = []string{
partialKey + clientId + state, // EXP 1
partialKey + clientId + util.Constants.DEFAULT_STATE, // EXP 2
partialKey + util.Constants.DEFAULT_ID + state, // EXP 3
partialKey + util.Constants.DEFAULT_ID + util.Constants.DEFAULT_STATE,// EXP 4
}
如果我们从数组初始化中提取项目构造,则数组在一个步骤中被初始化。
item1 := partialKey + clientId + state
item2 := partialKey + clientId + util.Constants.DEFAULT_STATE
item3 := partialKey + util.Constants.DEFAULT_ID + state
item4 := partialKey + util.Constants.DEFAULT_ID + util.Constants.DEFAULT_STATE
var combo = []string{item1, item2, item3, item4} // This is now one expression
推荐阅读
- angular - 在角度路由中从堆栈中删除以前的页面
- html - 绝对定位的 div 中的 SVG 图像在 Firefox 上与 Chrome 不同
- python - 计算和绘制分割掩码像素
- java - 获取从 JavaScript 生成的 HTML 元素
- javascript - 在中间件中调用对象函数
- javascript - 当文件是 quicktime (.mov) 文件时,如何循环播放背景音乐?
- r - 大向量 R 的差分矩阵
- r - R:这里的错误是什么“eval中的错误(predvars,data,env):数字'envir'arg不是长度为一”
- sql-server - AdventureWorks SSIS ETL 到 AdventureWorksDW 示例/演示
- java - ProcessBuilder 不在服务器上创建文件