Go 结构体传参

- 1 min

函数传参的时候, 什么时候用指针, 什么时候传结构体

  1. 可变用指针
  2. 不可变用结构体

go语言继承的时候, 什么时候用指针类型匿名字段,什么时候不用?

在Go语言中,当我们需要在子类中修改父类中的字段时,需要使用指针类型的匿名字段。这样在子类中修改这个字段的值时,会影响父类中的值。如果不需要在子类中修改父类中的字段,可以使用非指针类型的匿名字段。

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

type Employee struct {
    *Person // 使用指针类型的匿名字段
    Salary  float64
}

func main() {
    p := &Person{Name: "Alice", Age: 30}
    e := &Employee{Person: p, Salary: 50000}

    fmt.Println(e.Name) // 输出: Alice

    e.Name = "Bob"

    fmt.Println(p.Name) // 输出: Bob,因为Employee中的Person字段是一个指向p的指钋

    fmt.Println(e.Age) // 输出: 30
}

在上面的示例中,Employee结构体中使用指针类型的Person字段,当在Employee中修改Name字段时会影响到Person中的值。