问答详情
源自:6-2 Go语言-结构体和方法

Move方法体里这么写的同学,麻烦解释一下,谢谢。

person.Address,address = address,person.Address

Move方法体里这么写的同学,麻烦解释一下,谢谢。

提问者:雨情雾语 2019-11-02 18:11

个回答

  • 豆米
    2019-12-26 14:30:33

    这个算是一个go的语法糖吧,可以一起赋值。

    如 a,b = 1,2    从左到右  a = 1, b = 2

    当右边为变量时,执行赋值动作是它此刻的值。

    接上面例子     a,b = b,a。  执行此语句时,a = 1,b =2  所以相当于 a,b = 2,1

    这个语法糖在变量互换的时候异常好用

    之前:

        a=1,b=2;

        temp = a;

        a = b;

        b = temp;

    现:

        a,b = b,a

  • 迷茫的小菜
    2019-12-06 15:24:44

    Person结构体里面有旧地址的内容 北京  所以oldAddress声明并赋值person.Address

    newAddress为新地址内容 san Francisco 赋值给person.Address 因为是指针所以会修改Person本身

  • Landercy
    2019-11-05 14:40:41

    package main
    
    import "fmt"
    
    type Person struct {
        Name    string
        Gender  string
        Age     uint8
        Address string  // 结构体里加个属性
    }
    
    // 这里加个Move方法
    func (person *Person) Move(newAddress string) string{
        oldAddress:= person.Address
        person.Address = newAddress
        return oldAddress
    }
    
    func main() {
        p := Person{"Robert", "Male", 33, "Beijing"}
        oldAddress := p.Move("San Francisco")
        fmt.Printf("%s moved from %s to %s.\n", p.Name, oldAddress, p.Address)
    }