Go 水平组合 的代码示范

9 min read

以下是一些Go中水平组合的代码示范:

  1. 使用struct

使用struct是一种简单且有效的水平组合方式。以下是一个示例:

type Employee struct {
Name string
Age int
Salary int
Address Address
// ...
}

type Address struct {
Street string
City string
ZipCode string
}

在这个示例中,Employee结构体中包含了Address结构体,从而实现了水平组合。

  1. 使用interface

Go中的接口机制使得水平组合更加容易实现。以下是一个示例:

type Address interface {
GetStreet() string
GetCity() string
GetZipCode() string
}

type Employee struct {
Name string
Age int
Salary int
Address Address
// ...
}

type WorkingAddress struct {
Street string
City string
ZipCode string
}

func (a WorkingAddress) GetStreet() string {
return a.Street
}

func (a WorkingAddress) GetCity() string {
return a.City
}

func (a WorkingAddress) GetZipCode() string {
return a.ZipCode
}

在这个示例中,Address接口定义了三个方法,Employee结构体中包含了Address接口类型的变量,WorkingAddress结构体实现了Address接口,并且可以作为Employee结构体中Address变量的赋值选项。

  1. 使用函数

函数是Go中非常灵活的组合元素。以下是一个示例:

type Employee struct {
Name string
Age int
Salary int
Address func() string
// ...
}

func NewWorkingAddress() func() string {
return func() string {
return "123 Main St, Anywhere City, USA"
}
}

在这个示例中,Employee结构体中包含了一个函数类型的Address变量。使用NewWorkingAddress()函数可以返回一个实现了该函数类型的闭包,这个闭包的返回值即为地址信息。这种方式也可以实现水平组合的效果。