有没有办法将切片的每个元素存储在新行上? 像这样的东西:
1
2
3
而不是
1 2 3
我只是不想在新行上打印这些元素,但希望将每个元素存储在不同的行
这是代码:
package main
import "fmt"
func main() {
slice := []int{1, 2, 3}
fmt.Println(slice)
}
由于
答案 0 :(得分:2)
例如,
package main
import "fmt"
type VSlice []int
func (s VSlice) String() string {
var str string
for _, i := range s {
str += fmt.Sprintf("%d\n", i)
}
return str
}
func main() {
slice := []int{1, 2, 3}
fmt.Print(VSlice(slice))
}
输出:
1
2
3
答案 1 :(得分:1)
您也可以使用var paths = [];
var oldPolygon;
function drawPoly(p1, p2) {
paths.push([p1, p2]);
console.log(paths);
polygons = map.drawPolygon({
paths: paths,
strokeColor: '#432070',
strokeOpacity: 1,
strokeWeight: 3,
fillColor: '#432070',
fillOpacity: 0.6
});
// remove old one if exists.
if(oldPolygon != null){
map.removePolygon(oldPolygon);
}
// ... and save a reference to the new polygon for next time around.
oldPolygon = polygons;
}
strings.Join
答案 2 :(得分:0)
我对这两种方法中哪一种更快感兴趣 - 使用 for 循环打印切片,或加入切片然后打印结果,所以我测试了它。结果证明打印通常稍微快一点,尽管有时使用strings.Join会略有不同。
代码如下:
func printSlice(s[] string) {
for _, el := range s {
fmt.Println(el)
}
}
func joinSlice(s[] string) {
joinedSlice := strings.Join(s[:], "\n")
fmt.Println(joinedSlice)
}
func main() {
start := time.Now()
printSlice(dirs)
printTime := time.Since(start)
start = time.Now()
joinSlice(dirs)
joinTime := time.Since(start)
fmt.Printf("printSlice: %v \njoinSlice: %v \nprintSlice faster?: %v\n", printTime, joinTime, printTime < joinTime)
}
"dirs" 是一个包含文件列表的切片 - 在这种情况下超过 140 个文件。这是 10 个测试的执行时间(我不知道在 GoLang 中测试这个更优雅的方法,但如果有人知道,请随意。)
1
printSlice: 1.584753ms
joinSlice: 39.132467ms
printSlice faster?: true
2
printSlice: 1.195512ms
joinSlice: 30.53137ms
printSlice faster?: true
3
printSlice: 1.355297ms
joinSlice: 80.888305ms
printSlice faster?: true
4
printSlice: 1.347343ms
joinSlice: 32.668568ms
printSlice faster?: true
5
printSlice: 1.317251ms
joinSlice: 31.575808ms
printSlice faster?: true
6
printSlice: 1.038342ms
joinSlice: 27.515216ms
printSlice faster?: true
7
printSlice: 34.409332ms
joinSlice: 8.32355ms
printSlice faster?: false
8
printSlice: 1.20479ms
joinSlice: 30.070951ms
printSlice faster?: true
9
printSlice: 1.479724ms
joinSlice: 34.551614ms
printSlice faster?: true
10
printSlice: 977.179µs
joinSlice: 442.46µs
printSlice faster?: false
因此,在 10 次测试中的 8 次中,printSlice 更快。差异在一项测试中降至微秒,在另一项测试中降至毫秒。如果有人知道重复此测试的更好方法,请随时编辑或提出建议。