您将学习如何创建自己的包并导入自定义包。在此示例中,您将看到如何从另一个包或子包导入结构。您还可以从主包调用自定义包的函数。
以下是我们应用程序的目录结构。
├── family
│ ├── go.mod
│ ├── main.go
│ └── father
│ └── father.go
│ └── son
│ └── son.go
进入family目录并运行以下命令以创建一个名为 family 的go模块。
go mod init family
上面的命令将创建一个名为的文件。
要使用自定义包,我们必须先导入它。导入路径是附加在包的子目录和包名称上的模块名称。在我们的示例中,模块名称是 family,包父位于family正下方的父文件夹中。并且,包son位于父文件夹下的子文件夹中。
因此,"family/father"将导入father包,类似"family/father/son"将导入son包
package main
import (
parent "family/father"
child "family/father/son"
"fmt"
)
func main() {
f := new(parent.Father)
fmt.Println(f.Data("Mr. Jeremy Maclin"))
c := new(child.Son)
fmt.Println(c.Data("Riley Maclin"))
}
我们将father包别名为parent,将son别名为child。在main() 函数中,我们现在可以使用上面的别名。
在father文件夹中创建一个文件 。father内的文件应以package father开头,因为它属于father包。
# family\father\father.go
package father
import "fmt"
func init() {
fmt.Println("Father package initialized")
}
type Father struct {
Name string
}
func (f Father) Data(name string) string {
f.Name = "Father : " + name
return f.Name
}
init 函数可用于执行初始化工作,也可用于在执行开始之前确认程序的正确性。
在son文件夹中创建一个文件 。son文件夹中的文件应以package son开头,因为它属于 。
# family\father\son\son.go
package son
import "fmt"
func init() {
fmt.Println("Son package initialized")
}
type Son struct {
Name string
}
func (s Son) Data(name string) string {
s.Name = "Son : " + name
return s.Name
}
family>go run main.go
如果运行该程序,将获得以下输出。
Father package initialized
Son package initialized
Father : Mr. Jeremy Maclin
Son : Riley Maclin