GO 导入自定义包

导入的包里不能带有 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"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [TOC] 最开始写程序的时候,都是一个文件里输入几行源码(python 的一个 web 框架bottle就特别强...
    人世间阅读 5,878评论 1 10
  • 再次发现我其实是个很独的人,习惯了独来独往,四年的朝夕相处无话不说已让我很习惯了,无意识觉得是要分别了,就开始每顿...
    0efa852ee4f8阅读 231评论 0 0
  • 音符还在跳跃着 圆舞曲还没有停止 此刻 思绪复杂翩飞 仿佛成了我的苦役 想简单的去礼赞生命的美好 却如同一场惊险的...
    阿票阅读 918评论 2 8
  • 函数是一段完成特定任务的独立代码片段。你可以通过给函数命名来标识某个函数的功能,这个名字可以被用来在需要的时候"调...
    CDLOG阅读 233评论 0 0
  • 这个世界上,绝大部分人失败不是因为没有思考,而是因为犹豫不决,迟迟没有行动。 我们通常说,谋定而后动,...
    罗剑华阅读 156评论 1 0

友情链接更多精彩内容