如何在golang中高效地连接字符串数组和字符串
我在golang中有一组字符串和[]字符串,我需要连接它们。但由于某些原因,我在这一过程中得到了很多空白,我需要去掉这些空白 这是密码如何在golang中高效地连接字符串数组和字符串,go,Go,我在golang中有一组字符串和[]字符串,我需要连接它们。但由于某些原因,我在这一过程中得到了很多空白,我需要去掉这些空白 这是密码 tests := strings.TrimSpace(s[0]) dep_string := make ([]string, len(tests) + len(sfinal)) dep_string = append (dep_string,tests) for _,v := range sfinal { dep_st
tests := strings.TrimSpace(s[0])
dep_string := make ([]string, len(tests) + len(sfinal))
dep_string = append (dep_string,tests)
for _,v := range sfinal {
dep_string = append(dep_string,v)
}
fmt.Println("dep_String is ",dep_string)
Input:
s[0] = "filename"
sfinal = [test test1]
expected output
[filename test test1]
actual output
[ filename test test1]
这真的很奇怪;即使使用了TrimSpace,我也无法消除多余的空间。有什么有效的方法将它们连接起来吗?当您执行赋值
dep_string:=make([]string,len(tests)+len(sfinal))
时,将分配的内存归零,这样dep_string
前面就有len(tests)+len sfinal
空字符串。正如现在所写的那样,在所有这些归零的字符串之后,您将追加到片段的末尾
运行以查看这些空格在代码中的显示位置。您可以通过制作一个长度为0的切片,而不是容量
len(tests)+len(sfinal)
。然后可以使用字符串将它们连接起来。Join
空白是由于dep_字符串中的所有空元素造成的。当您使用make函数时,它会创建一个具有指定长度和容量的切片,并填充一堆空白。然后,当您使用append时,它会看到切片已达到其最大容量,扩展切片,然后添加您的元素,毕竟什么都并没有。解决方案是制作一个能够容纳所有元素的切片,但初始长度为零:
dep_string := make ([]string, 0, len(tests) + len(sfinal))
strings.TrimSpace是不必要的。你可以在上阅读更多关于切片工作原理的信息,比尔·德罗斯和萨波希恩是正确的 至于解决问题的更简单方法,您还可以执行():
这里有一个简单有效的解决方案
package main
import "fmt"
func main() {
s := make([]string, 1, 4)
s[0] = "filename"
sfinal := []string{"test", "test1"}
dep_string := append(s[:1], sfinal...)
fmt.Println("dep_String is ", dep_string)
}
输出:
dep_String is [filename test test1]
当你做赋值
dep\u string:=make([]string,len(tests)+len(sfinal))
时,它分配len(tests)+len(sfinal)
null string,在你的例子中是10个空字符串,所以当你做赋值fmt.Println(“dep\u string,dep\u string)
时,它将打印10个空字符串,因为fmt.Println(字符串切片)
将在两个元素之间添加空格,因此它将打印9个空格,因此它将打印[filename test test1]
附加后,空格是10个空字符串之间的空格
dep_String is [filename test test1]