登录
首页 >  Golang >  Go问答

在同一个目录中有两个包有意义吗?

来源:Golang技术栈

时间:2023-04-11 11:31:31 256浏览 收藏

从现在开始,努力学习吧!本文《在同一个目录中有两个包有意义吗?》主要讲解了golang等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我有一个项目,它提供一个库(导出一些函数)并且还必须提供一个命令行界面(必须有一个可执行文件)。

目录结构示例:

whatever.io/
    myproject/
        main.go
        myproject.go

go 编译器需要 包 mainfunc main 才能开始执行。我的图书馆需要我在上面放东西的 包 myproject 。 这是当我构建另一个尝试导入 myproject 的项目时 go 工具所说的:

main.go:5:2: found packages myproject (myproject.go) and main (main.go) in $GOPATH/src/whatever.io/myproject

所以我相信没有办法做到这一点。

我应该将库或 CLI 移动到另一个包吗?

正确答案

只需将您的包移动到 main.go 同一目录中的新文件夹中。请记住从 $GOPATH 的引用中导入新包。

例子:

user@user:~/p/go/test/so-multipack$ ls -R
.:
a  main.go

./a:
a.go
user@user:~/p/go/test/so-multipack$ cat main.go 
package main

import (
    "../so-multipack/a"
)
func main(){
    a.Hello()
}
user@user:~/p/go/test/so-multipack$ cat a/a.go 
package a
import (
    "fmt"
)
func Hello(){
    fmt.Println("hello from a")
}
user@user:~/p/go/test/so-multipack$ go run main.go 
hello from a
user@user:~/p/go/test/so-multipack$ go build 
user@user:~/p/go/test/so-multipack$ ls
a  main.go  so-multipack
user@user:~/p/go/test/so-multipack$ 

有用的链接:

[go build vs go build file.go](https://stackoverflow.com/questions/19234445/go-build-vs-go-build- file-go/19240125#19240125)

今天关于《在同一个目录中有两个包有意义吗?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>