以下是一些Go中水平组合的代码示范:
- 使用struct
使用struct是一种简单且有效的水平组合方式。以下是一个示例:
type Employee struct {
Name string
Age int
Salary int
Address Address
// ...
}
type Address struct {
Street string
City string
ZipCode string
}
在这个示例中,Employee结构体中包含了Address结构体,从而实现了水平组合。
- 使用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变量的赋值选项。
- 使用函数
函数是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()函数可以返回一个实现了该函数类型的闭包,这个闭包的返回值即为地址信息。这种方式也可以实现水平组合的效果。