此示例旨在演示Go中接口的实现并导入您的自定义包。您将能够在自定义程序包中为应用程序定义和声明一个接口,并在您的应用程序中实现该接口。
以下将是我们应用程序的目录结构。
├── 分析
│ ├── go.mod
│ ├── main.go
│ ├── 车辆
│ │ └── 车辆.go
│ └── 人的
│ └── 人类
进去 分析 目录并运行以下命令以创建名为go的go模块 分析.
go mod init 分析
上面的命令将创建一个名为 go.mod。以下是文件的内容。
module 分析
go 1.14
analysis\main.go
要使用自定义包,我们必须先导入它。导入路径是模块的名称,该名称后附有包的子目录和包名称。在我们的示例中,模块名称为 分析 程序包人员位于分析文件夹下的人员文件夹中。同样,打包车辆位于分析文件夹下的车辆文件夹中。
因此,该行导入 “分析/车辆” 将导入 车辆 包装,以及 “分析/人” 将导入 人的 包
包 main
import (
h “分析/人”
v “分析/车辆”
"fmt"
)
func main() {
var 宝马 v.Vehicle
bmw = v.Car("World Top Brand")
var labour h.Human
labour = h.Man("Software Developer")
for i, j := range 宝马 .Structure() {
fmt.Printf("%-15s <=====> %15s\n", j, labour.Structure()[i])
}
}
我们将别名 车辆 打包为 v 和 人的 打包为 h。在main()函数中,我们分配 宝马 这是哪种类型 车辆。以来 汽车 实现 车辆 接口。 宝马 .Structure()调用 结构体 方法开启 汽车 类型。
分析\车辆\ 车辆.go
建立档案 车辆.go 在 - 的里面 车辆 夹。里面的文件 车辆 文件夹应以该行开头 包装车 因为它属于 车辆 包。
包 车辆
type 车辆 interface {
Structure() []string // Common Method
Speed() string
}
type 汽车 string
func (c 汽车) 结构体() []string {
var parts = []string{"ECU", "Engine", "Air Filters", "Wipers", "Gas Task"}
return parts
}
func (c 汽车) Speed() string {
return "200 Km/Hrs"
}
我们添加了方法 结构体() 和 速度() 到接收器类型 汽车。现在据说Car实现了接口 车辆.
analysis \ 人的 \ 人类
建立档案 人类 在 - 的里面 人的 夹。里面的文件 人的 文件夹应以该行开头 包人 因为它属于 人的 包。
包 人的
type 人的 interface {
Structure() []string // Common Method
Performance() string
}
type 人 string
func (m 人) 结构体() []string {
var parts = []string{"Brain", "Heart", "Nose", "Eyelashes", "Stomach"}
return parts
}
func (m 人) Performance() string {
return "8 Hrs/Day"
}
我们添加了方法 结构体() 和 性能() 到接收器类型 人。现在据说Man实现了接口 人的.
analysis>go run main.go
如果运行该程序,将得到以下输出。
ECU <=====> Brain Engine <=====> Heart Air Filters <=====> Nose Wipers <=====> Eyelashes Gas Task <=====> Stomach