Golang中import "fmt"是一个程序而非可导入包的问题解决

Golang中import "fmt"是一个程序而非可导入包的问题解决 大家好,我正在尝试运行一段非常简单的代码,因为我对Go语言还比较陌生。但我不明白为什么当我尝试运行它时,命令提示符会显示以下信息:

import “fmt” 是一个程序,而不是一个可导入的包,包 command-line-arguments 导入 fmt:找不到包

有人能帮忙吗?非常感谢。

6 回复

我刚刚按照您的指示解决了这个问题,非常感谢!!!

更多关于Golang中import "fmt"是一个程序而非可导入包的问题解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你的代码是什么?你尝试如何运行它?你的Go版本是多少?操作系统是什么?

以下是我的代码:

package main

import "fmt"

func main() {

    var x = 10

    var y = 15

    sum := x + y

    fmt.Println("La somma è ", sum)

}

我当前所在的目录是:C:\Users\Ilenia\go\src 我尝试使用 go run 代码文件名.go 来运行它。 我的操作系统是 Windows,Go 的版本是:go1.17.5 windows/amd64

Go 首先在 GOROOT/src 目录中查找包目录,如果找不到该包,则会去 GOPATH/src 中查找。由于 fmt 包是 Go 标准库的一部分,位于 GOROOT/src 中,因此会从那里导入。但是,由于 Go 在 GOROOT 中找不到 greet 包,它将在 GOPATH/src 中查找,而我们在那里有这个包。

// 我发现了这个,我想我犯了一个错误,因为我把 goroot 和 gopath 放在了同一个目录下,但我该如何解决这个问题呢?

  1. 在 Go 1.17 中,你不再需要遵循 GOPATH 工作区约定,只需使用模块即可。
  2. 确保 GOROOT 指向其原始指向的位置。我不确定在 Windows 上应该如何设置,但在我的 NixOS 系统中,它指向“安装”目录。
// 代码示例:GOROOT 环境变量
package main

import (
    "fmt"
    "os"
)

func main() {
    goroot := os.Getenv("GOROOT")
    fmt.Printf("GOROOT 环境变量值: %s\n", goroot)
}

这是一个常见的Go环境配置问题。错误信息表明Go工具链无法找到标准库中的fmt包,通常是因为GOROOT环境变量没有正确设置。

首先,请检查你的Go安装和环境变量:

// 你可以通过运行以下命令来检查Go环境
// 在命令行中执行:
// go env GOROOT
// go env GOPATH

// 如果GOROOT没有设置或设置错误,需要正确配置

如果你在Windows系统上,可以这样设置环境变量:

# 设置GOROOT指向你的Go安装目录
set GOROOT=C:\Go
set PATH=%GOROOT%\bin;%PATH%

在Linux或macOS上:

# 在~/.bashrc或~/.zshrc中添加
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH

然后验证fmt包是否存在于标准库路径中:

// 检查$GOROOT/src/fmt目录是否存在
// 标准库的fmt包应该位于$GOROOT/src/fmt/

另一个可能的问题是Go模块初始化。确保你在正确的目录中运行代码:

# 初始化Go模块(如果你的代码不在GOPATH中)
go mod init your-module-name

最后,这是一个有效的示例代码,应该能正常工作:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

运行这个程序:

go run main.go

如果问题仍然存在,请检查:

  1. Go是否安装正确(运行go version
  2. GOROOT环境变量是否指向正确的安装目录
  3. 文件扩展名是否为.go
  4. 是否在正确的目录中执行命令
回到顶部