如何在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

我在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_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]