Golang 面试题:连接字符串有几种方法

面试真题来源:腾讯会议

字符串连接是编程中最基本的操作之一,每种语言都有不同的方法来实现,我们接下来研究下 go 能够有几种方式来连接字符串。

+

加号(+)运算符可用于连接字符串。它通常是最常用的字符串连接方式,无需太多考虑。

name := "John" + " " + "Doe" // John Doe

只要提供多个字符串作为参数,fmt 包中的 print 函数就会自动连接。它还可以在字符串之间添加空格。

fmt.Println("It", "works!") // prints "It works!"

+=

可以使用 += 运算符将字符串附加到另一个字符串上。和加号运算符一样,但是是一种稍微短一点的连接方式。它将右侧附加到操作它的字符串上。所以,它本质上是附加字符串。下面是使用 += 运算符追加字符串的示例。

u := "This"
v := " is working."
u += v   // sets u to "This is working."

strings.join()

strings 包中的 join 函数可用于连接字符串,如下所示:

func Join(a []string, sep string) string

它需要两个参数,一个字符串数组和一个分隔符来连接他们。它将从中生成一个字符串,下面是一个示例:

package main
 
import (
    "fmt"
    "strings"
)
 
func main() {
 
    s := []string{"This", "is", "a", "string."}
 
    v := strings.Join(s, " ")
     
    fmt.Println(v)  // This is a string.
}

fmt.Sprintf()

fmt 包中的 Sprintf 方法可用于字符串连接。下面是个例子:

    "fmt"
)
 
func main() {
 
    s1 := "abc"
    s2 := "xyz"
     
    v := fmt.Sprintf("%s%s", s1, s2)
     
    fmt.Println(v) // abcxyz
}

如你所看到的,字符串 format 允许我们以这种方式进行字符串连接。

bytes.buffer

bytes 包包含一种类型的 buffer,即字节缓冲。我们可以使用 WriteString 方法写入字符串,然后将缓冲转换为字符串。下面是一个示例:

package main
 
import (
	"bytes"
    "fmt"
)
 
func main() {
    var b bytes.Buffer
     
    b.WriteString("abc")
    b.WriteString("def") // append
     
    fmt.Println(b.String()) // abcdef
}

strings builder

strings 包有一个 builder 类型,这是构建字符串的一种非常有效的方法。它在连接字符串时使用的内存要少得多,是一种更好的连接方式。函数 WriteString 允许我们以更快的方式连接字符串,下面是示例:

package main
 
import (
    "fmt"
    "strings"
)
 
func main() {
    var sb strings.Builder
    sb.WriteString("First")
    sb.WriteString("Second")
    fmt.Println(sb.String())    // FirstSecond
}

使用同一个 builder,我们可以向字符串里面添加 rune 或 bytes。

strings.Repeat

我们可以多次连接同一个字符串以形成另一个字符串。strings 包中的 repeat 方法以一种高效的方式完成了这项工作:

package main
 
import (
    "fmt"
    "strings"
)
 
func main() {
    fmt.Println(strings.Repeat("abc", 3))  // abcabcabc
}

思维导图

go-面试题-连接字符串有几种方法.png

Previous
Next