go - 如何将本地目录中的包包含到 main.go 中

标签 go

我在 windows 10 中使用 go 版本 go1.11.2 windows/amd64

我在桌面上有一个名为“GoPro”的文件夹,其中有 一个文件 - main.go 一个文件夹 - 模块

“模块”文件夹包含 一个文件 - Modules.go

文件夹结构

Desktop
   |------->GoPro
               |----->main.go
               |----->Models
                          |---->Models.go

主.go

// desktop/GoPro/main.go 

package main

import (
    "./Models"
)

func main() {
    Models.Printhello()
}

模型.go

// desktop/GoPro/Models

package Models

import "fmt"

func Printhello() {
    fmt.Println("Hello")
}

如果尝试运行 main.go,我会收到以下错误,Go recongise the package but it saying undefined.

go run main.go

command-line-arguments

.\main.go:8:2: undefined: Models

该文件夹不在 GOPATH 中。我只是想在 main.go 的子文件夹中导入包

最佳答案

您可以选择 set up $GOPATH 并将您的库放在相对于 $GOPATHuse modules 的路径中.

对于模块,你可以这样做:

$ tree
.
├── go.mod
├── main.go
└── mylib
    └── mylib.go

文件内容:

$ cat go.mod
module myproject.com

====

$ cat main.go 
package main

import "myproject.com/mylib"

func main() {
    mylib.Say()
}

====

$ cat mylib/mylib.go 
package mylib

import "fmt"

func Say() {
    fmt.Println("Hello from mylib")
}

附言使用小写字母 name packages/modules

关于go - 如何将本地目录中的包包含到 main.go 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54662508/

相关文章:

go - 为什么下面的 Go 程序需要函数的名称是 String() 而不是其他任何东西?

garbage-collection - 有没有一种安全的方法可以使用 CGo 从 C 代码中保留对 Go 变量的引用?

unit-testing - 如何在读取响应正文时强制出错

go - 将来自多个 go routines 的响应获取到一个数组中

go - 如何向 Go Present 中的小节添加文本?

go - 运行目录下的所有文件,什么是go run ./cmd/*.go?

go - 发生了什么,我的代码在 Go Lang 中解析 XML 后无法显示结果?

mongodb - go mongodb FindOneAndUpdate 几个字段

json - 如何强制接口(interface)对象做一些索引操作?

go - gcloud 应用程序部署说 : exec: "git": executable file not found in $PATH