Go 垂直组合(类型组合) 的代码示范

10 min read

垂直组合也叫类型组合,是指将两个或多个不同的类型组合成一个新的类型。在 Go 语言中,可以使用结构体来实现垂直组合。

以下是一个示例代码,其中我们通过垂直组合将三个不同的类型组合成一个新的类型:

package main

import "fmt"

// 定义三个不同的类型
type Person struct {
    Name    string
    Age     int
}

type Address struct {
    Street  string
    City    string
    State   string
    Zipcode int
}

type ContactInfo struct {
    Email   string
    Phone   string
}

// 垂直组合将三个类型组合成一个新的类型
type Employee struct {
    Person      // 匿名字段
    Address     // 匿名字段
    ContactInfo // 匿名字段
    Title       string
    Salary      float64
}

func main() {
    // 创建一个 Employee 类型的变量
    emp := Employee{
        Person: Person{
            Name: "Alice",
            Age:  25,
        },
        Address: Address{
            Street:  "123 Main St",
            City:    "Anytown",
            State:   "CA",
            Zipcode: 12345,
        },
        ContactInfo: ContactInfo{
            Email: "[email protected]",
            Phone: "555-1234",
        },
        Title:  "Software Engineer",
        Salary: 75000.0,
    }

    // 输出 Employee 变量的信息
    fmt.Println("Name:", emp.Person.Name)
    fmt.Println("Age:", emp.Person.Age)
    fmt.Println("Street:", emp.Address.Street)
    fmt.Println("City:", emp.Address.City)
    fmt.Println("State:", emp.Address.State)
    fmt.Println("Zipcode:", emp.Address.Zipcode)
    fmt.Println("Email:", emp.ContactInfo.Email)
    fmt.Println("Phone:", emp.ContactInfo.Phone)
    fmt.Println("Title:", emp.Title)
    fmt.Println("Salary:", emp.Salary)
}

在上面的代码中,我们定义了三个不同的类型:Person、Address 和 ContactInfo。然后,在定义 Employee 类型时,使用匿名字段将三个类型“垂直”组合起来。

最后,我们创建了一个 Employee 变量 emp,并输出了其各个字段的值。

总的来说,垂直组合是 Go 语言中非常强大、灵活的一种组合方式。通过垂直组合,可以轻松地将多个类型组合成一个新的类型,并且这个新类型可以直接访问组合前的类型的字段和方法。