golang导入不同文件夹下的自定义包

参考文章 https://mp.weixin.qq.com/s/g4_HWOzL3NNFvyOHseLE6Q。

  1. 首先创建目录 src/github.com/gopherguides
  2. mkdir cmd 和 mkdir creatures
    在这里插入图片描述
  3. 执行go mod
  • cd cmd && go mod init github.com/gopherguides/cmd
  • cd go creature && mod init github.com/gopherguides/creature
    在这里插入图片描述
  1. 新增 main.go 和 creature.go 文件
    在这里插入图片描述
  • creature.go
package creature

import (
 "math/rand"
)

var creatures = []string{"shark", "jellyfish", "squid", "octopus", "dolphin"}

func Random() string {
 i := rand.Intn(len(creatures))
 return creatures[i]
}
  • main.go
package main

import (
 "fmt"

 "github.com/gopherguides/creature"
)

func main() {
 fmt.Println(creature.Random())
 fmt.Println(creature.Random())
 fmt.Println(creature.Random())
 fmt.Println(creature.Random())
}
  1. 此时import会找不到 github.com/gopherguides/creature 包,需要在go.mod里指定包路径
  • 运行命令:go mod edit -replace github.com/gopherguides/creature=…/creature

cmd/go.mod

module github.com/gopherguides/cmd

go 1.20
replace github.com/gopherguides/creature => ../creature

第一行告诉编译器,我们创建的 cmd 包实际上是 github.com/gopherguides/cmd。
第二行告诉编译器,github.com/gopherguides/creature可以在磁盘上的 …/creature 目录下找到。

creature/go.mod

module github.com/gopherguides/creature

go 1.20

这告诉编译器,我们创建的 creature 包实际上是 github.com/gopherguides/creature 包。没有这个,cmd 包就不知道从哪里导入这个包。

  1. cd cmd && go mod tidy

cmd/go.mod

module github.com/gopherguides/cmd

go 1.20

replace github.com/gopherguides/creature => ../creature

require github.com/gopherguides/creature v0.0.0-00010101000000-000000000000
  1. cd cmd && go run main.go
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值