📜  Golang中连接两个字符串的不同方式

📅  最后修改于: 2021-10-25 02:13:09             🧑  作者: Mango

在 Go 语言中,字符串是用 UTF-8 编码的任意字节的不可变链。在 Go字符串中,将两个或多个字符串添加到一个新的单个字符串的过程称为连接。在 Go 语言中连接两个或多个字符串的最简单方法是使用+ operator 。它也称为串联运算符。

例子:

// Go program to illustrate
// how to concatenate strings
package main
  
import "fmt"
  
func main() {
  
    // Creating and initializing strings
    // using var keyword
    var str1 string
    str1 = "Welcome!"
  
    var str2 string
    str2 = "GeeksforGeeks"
  
    // Concatenating strings
    // Using + operator
    fmt.Println("New string 1: ", str1+str2)
  
    // Creating and initializing strings
    // Using shorthand declaration
    str3 := "Geeks"
    str4 := "Geeks"
  
    // Concatenating strings
    // Using + operator
    result := str3 + "for" + str4
  
    fmt.Println("New string 2: ", result)
  
}

输出:

New string 1:  Welcome!GeeksforGeeks
New string 2:  GeeksforGeeks

连接字符串的其他方法

  • 使用bytes.Buffer:您还可以通过连接使用字符串的字节创建一个字符串bytes.BufferWriteString()方法。它是在 bytes 包下定义的。它可以防止不必要的字符串对象的生成,是指它不产生像在从两个或多个字符串+运算符的新字符串。

    例子:

    // Go program to illustrate how to concatenate strings
    // Using bytes.Buffer with WriteString() function
    package main
      
    import (
        "bytes"
        "fmt"
    )
      
    func main() {
      
        // Creating and initializing strings
        // Using bytes.Buffer with 
        // WriteString() function
        var b bytes.Buffer
          
        b.WriteString("G")
        b.WriteString("e")
        b.WriteString("e")
        b.WriteString("k")
        b.WriteString("s")
          
        fmt.Println("String: ", b.String())
      
        b.WriteString("f")
        b.WriteString("o")
        b.WriteString("r")
        b.WriteString("G")
        b.WriteString("e")
        b.WriteString("e")
        b.WriteString("k")
        b.WriteString("s")
          
        fmt.Println("String: ", b.String())
      
    }
    

    输出:

    String:  Geeks
    String:  GeeksforGeeks
    
  • 使用 Sprintf:在 Go 语言中,您还可以使用Sprintf()方法连接字符串。

    例子:

    // Go program to illustrate how to concatenate strings
    // Using Sprintf function
    package main
      
    import "fmt"
      
    func main() {
      
        // Creating and initializing strings
        str1 := "Tutorial"
        str2 := "of"
        str3 := "Go"
        str4 := "Language"
      
        // Concatenating strings using 
        // Sprintf() function
        result := fmt.Sprintf("%s%s%s%s", str1, 
                              str2, str3, str4)
          
        fmt.Println(result)
    }
    

    输出:

    TutorialofGoLanguage
  • 使用 +=运算符或字符串附加:在 Go字符串,您可以使用+=运算符附加字符串。此运算符将新的或给定的字符串到指定字符串的末尾。

    例子:

    // Go program to illustrate how
    // to concatenate strings
    // Using += operator
    package main
      
    import "fmt"
      
    func main() {
      
        // Creating and initializing strings
        str1 := "Welcome"
        str2 := "GeeksforGeeks"
      
        // Using += operator
        str1 += str2
        fmt.Println("String: ", str1)
      
        str1 += "This is the tutorial of Go language"
        fmt.Println("String: ", str1)
      
        str2 += "Portal"
        fmt.Println("String: ", str2)
      
    }
    

    输出:

    String:  WelcomeGeeksforGeeks
    String:  WelcomeGeeksforGeeksThis is the tutorial of Go language
    String:  GeeksforGeeksPortal
    
  • 使用 Join()函数:该函数将字符串切片中存在的所有元素连接成一个字符串。该函数在字符串包中可用。

    句法:

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

    这里, str是我们可以连接元素的字符串, sep 是放置在最终字符串元素之间的分隔符。

    例子:

    // Go program to illustrate how to
    // concatenate all the elements
    // present in the slice of the string
    package main
      
    import (
        "fmt"
        "strings"
    )
      
    func main() {
      
        // Creating and initializing slice of string
        myslice := []string{"Welcome", "To",
                  "GeeksforGeeks", "Portal"}
      
        // Concatenating the elements 
        // present in the slice
        // Using join() function
        result := strings.Join(myslice, "-")
        fmt.Println(result)
    }
    

    输出:

    Welcome-To-GeeksforGeeks-Portal