在 import 指令中使用绝对路径代替 go "fmt"

Use Absolute path instead for go "fmt" in import directive

这是一个指导性问题,而不是程序性问题,因为简单地要求 "fmt" 就可以正常工作,但是当使用 hello world golang 文件时,我将其修改如下

    package main
    
    import "golang.org/fmt"
    
    func main() {
            fmt.Println("Hello, world")
    }

我得到回应:

go:3:8: no required module provides package golang.org/fmt; to add it:
    go get golang.org/fmt

我可以在 /usr/local/go/src/fmt 中看到 fmt 包,它反映了 https://golang.org/src/fmt/

中的文件

我在上面的文件中可能非常接近,正确的 绝对 路径是什么可以包含 fmt ?谢谢!

包的正确绝对导入路径是 fmt

Relative import paths./../ 开头。导入路径fmt为绝对导入路径。

Remote import paths以域名开头。该包没有远程导入路径。

工具链为每个导入路径创建一个唯一的包。如果应用程序可以使用远程导入路径引用 fmt 包的源代码,则具有远程路径的包将不同于标准 fmt 包。包装的每个方面都是独一无二的。代码是重复的。每个包都有一个 ScanState 类型,这些类型不能互换使用。 pp cache 重复。等等。

在这种情况下,fmt 是完全限定的路径。将 fmt 文档 [1] 与 golang.org/x/text 文档 [2] 进行比较。

Go 标准库确实有 go.mod [3],但尝试导入 std/fmt 也不起作用。

  1. https://pkg.go.dev/fmt
  2. https://pkg.go.dev/golang.org/x/text
  3. https://github.com/golang/go/blob/master/src/go.mod