一
导入的包里不能带有 main 函数,否则会报下面的错误
[Go] Import “abcd/xyz” is a program, not an importable package.
hello
│ ├── main.go
│ ├── mylib
│ │ └── mylib.go
│ └── others
│ ├── Add.go
│ ├── ConvertString.go
│ ├── hello.go
│ ├── import.go
│ ├── Simpleweb.go
│ ├── struct.go
│ └── TimeConvert.go
代码
package mylib
func Add(a, b int) int {
return a + b
}
package main
import (
"hello/mylib"
"fmt"
)
func main() {
fmt.Println(mylib.Add(1, 2))
}
go mod
使用go mod 管理各种依赖,当导入自己定义的包的时候,需要从go.mod文件作为绝对路径import。并且路径开头应该是module名,不是目录名
举例:
$ tree SimpleBlog
SimpleBlog
├── go.mod
├── main
├── main.go
├── README.md
└── routers
└── Index.go
1 directory, 5 files
这是我当前的目录结构,可以看到,在 SimpleBlog 目录下面是go.mod文件,在 routers 目录下有一个 Index.go 文件。
使用 go mod 初始化一下
$ go mod init blog
go: creating new go.mod: module blog
我现在的 module 名是 blog, 而目录名是 SimpleBlog,在 main.go 里,我需要引入 routers 目录下自定义的包,此时在 main.go 里,需要import "blog/routers"
,而不是import "SimpleBlog/routers"