交换功能在Golang中不起作用

Har*_*rry 0 go

实际上我只是开始学习golang。一开始,我认为=:=相同。但是后来我知道两者之间有些区别。

我在golnag中学习了交换功能

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用var此功能重写此功能时不起作用

package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
   var a, b string
    a ="hello"
    b="world"
     swap(a, b)
    fmt.Println(a, b)
}
Run Code Online (Sandbox Code Playgroud)

这个程序有什么错误?

md2*_*rpe 5

另一个解决方案是使用指针:

package main

import "fmt"

func swap(x, y *string) {
    *x, *y = *y, *x
}

func main() {
    var a, b string
    a ="hello"
    b="world"
    swap(&a, &b)
    fmt.Println(a, b)
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/-vxUMlaVmN

  • 交换的真正解决方案是这个。其他方法不交换值,而是以相反的顺序返回输入值。 (2认同)