Go语言中三个点的用法

发布时间 2023-08-09 13:33:00作者: tangjicheng

在Go语言中,三个点 ... 在不同的上下文中有不同的含义。以下是一些常见的情况:

  1. 可变参数(Variadic Parameters):
    在函数定义中,... 用于表示可变参数,允许函数接受不定数量的参数。这些参数被封装在一个切片中。
func foo(values ...int) {
    // values 是一个 int 切片
    for _, val := range values {
        fmt.Println(val)
    }
}

func main() {
    foo(1, 2, 3)
}
  1. 切片展开(Slicing):
    在切片中使用 ... 可以将一个切片展开成独立的元素。
s1 := []int{1, 2, 3}
s2 := []int{4, 5, 6}
combined := append(s1, s2...) // 将 s2 展开后添加到 s1 中
  1. 结构体字段展开(Struct Field Embedding):
    在结构体定义中,可以使用 ... 将一个结构体嵌入另一个结构体,使得内嵌结构体的字段可以在外部结构体中直接访问。
type Person struct {
    Name string
    Age  int
}

type Employee struct {
    Person
    EmployeeID int
}

func main() {
    emp := Employee{
        Person: Person{Name: "Alice", Age: 30},
        EmployeeID: 12345,
    }

    fmt.Println(emp.Name) // 可以直接访问内嵌结构体的字段
}

这只是三个点 ... 在Go语言中的一些常见用法示例。它在不同上下文中可能会有其他用途,具体取决于你所在的代码环境。