我正在尝试使用go的模板系统编写一个像这样的字符串:(p1,p2,p3),其中p1,p2,…来自程序中的数组。我的问题是如何为最后一个(或第一个)元素正确放置逗号。
我的非工作版本输出(p1,p2,p3,)如下所示:
package main
import "text/template"
import "os"
func main() {
ip := []string{"p1", "p2", "p3"}
temp := template.New("myTemplate")
temp,_ = temp.Parse(paramList)
temp.Execute(os.Stdout, ip)
}
const paramList =
`{{ $i := . }}({{ range $i }}{{ . }}, {{end}})`
到目前为止,我的最佳线索是在以下声明中的http://golang.org/pkg/text/template/。
如果“范围”操作初始化变量,则将变量设置为迭代的连续元素。 另外,“范围”可以声明两个变量,以逗号分隔:
$index, $element := pipeline
在这种情况下,$ index和$ element分别设置为数组/切片索引或映射键和元素的连续值。 请注意,如果只有一个变量,则会为其分配元素;这与Go
range子句中的约定相反。建议在哪里索引
这表明可以在迭代中获得索引,但我只是无法弄清楚范围声明两个变量的含义以及在模板中应声明这些变量的位置。
请从go-nuts邮件列表中查看此示例。该技巧的一个关键是模板if
不同于Go语言if
。模板可以测试零值,这与需要布尔值的Go语言不同。然后{{if $index}},{{end}}
,神奇的地方是$ index除了在赋值中的出现外无需声明。
问题内容: 给定模板: 这可以输出: 但是,如果我要输出: 我需要知道哪个是上述范围内的最后一个元素。 我可以设置一个变量,该变量保留数组的长度,但是始终为3,并且上面的值永远只能为2。而且,根据我所见,您无法在模板中执行算术运算。 是否可以检测模板范围内的最后一个值?干杯。 问题答案: 这可能不是最优雅的解决方案,但却是我能找到的最好的解决方案: http://play.golang.org/p
问题内容: 我有这样的代码: 它会输出: 键:a值:b,键:c值:d, 但我想要这样的东西: 键:a值:b,键:c值:d 我不需要最后一个逗号,如何删除它。我在这里找到了用于循环数组的解决方案:https : //groups.google.com/d/msg/golang- nuts/XBScetK-guk/Bh7ZFz6R3wQJ ,但是我无法获取地图索引。 问题答案: 这是使用模板函数编写逗
问题内容: 我在做一个简单的文本处理和打印语句时经常遇到这种情况,其中我遍历一个集合,我想对最后一个元素进行特殊情况处理(例如,除最后一种情况外,每个普通元素都将用逗号分隔)。 是否有一些最佳实践习惯用法或优雅的形式,不需要重复代码或在循环中插入if或else。 例如,我有一个要用逗号分隔的列表打印的字符串列表。(“做而做”解决方案已经假定该列表包含2个或更多元素,否则与条件循环更正确一样)。 例
本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因
如果我研究一维上两个球的碰撞检测。假设第一个球在位置0,每帧速度5像素,第二个球在位置3,每帧速度-5像素,那么在下一帧中,第一个球将移动到位置5,第二个球将跳到位置-2。在这种情况下,它们之间没有重叠,因此碰撞检测将失败。我怎么处理这个案子?这里有一张图片来说明:
有人能帮忙吗?我正在尝试获取代表动态生成的智能卡(例如633597015500042010)的按钮的最后一个xpath元素,然后单击它。我尝试了以下方法,但仍然找不到解决方法。我打算捕获的按钮的名称是“Select”。 driver.findElement(by.xpath(“//div[@class='select-item']/div)[last()]”).click();