交换两个字符串(Golang)

alb*_*ttx 0 go

我目前正在学习Golang,我决定编写一些简单的算法来学习语法.我希望它不是已经答案,但我没有找到它..

我有交换字符串的问题

func swap(str1, str2 string) {
    /*
     * Also possible :
     * str1, str2 = str2, str1
     */
    // str1, str2 = str2, str1
    tmp := str1
    str1 = str2
    str2 = tmp
}

func main() {
    a := "World !"
    b := "Hello"
    swap(a, b)
    fmt.Printf("a=%s\nb=%s\n", a, b)
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码不起作用?

Jim*_*imB 6

交换str1str2不改变ab,因为他们是副本ab.使用指针:

func swap(str1, str2 *string) {
    *str1, *str2 = *str2, *str1
}

func main() {
    a := "salut"
    b := "les gens"
    swap(&a, &b)
    fmt.Printf("a=%s\nb=%s\n", a, b)
}
Run Code Online (Sandbox Code Playgroud)

http://play.golang.org/p/Qw0t5I-XGT