Golang新手求助:程序运行无输出也无报错怎么办

Golang新手求助:程序运行无输出也无报错怎么办 我在导入包时遇到了一些困难。我期望程序要么抛出错误,要么输出预期结果(应该只是一行包含数据的文本)。这个包是一个二进制解析器,但我似乎只得到了一个输出信息,看起来只是引用了该包及其内容。

输出

tecid.go:7:2: found packages d2s (attributes.go) and main (tecid.go) in C:\Users\Winston (Work)\go\src\github.com\nokka\d2s

代码

package main

import (
	"fmt"
	"log"
	"os"
	"github.com/nokka/d2s"
)

func main() {
	path := "nokka.d2s"
	file, err := os.Open(path)
	if err != nil {
		log.Fatal("Error while opening .d2s file", err)
	}

	defer file.Close()

	char, err := d2s.Parse(file)
	if err != nil {
		log.Fatal(err)
	}

	// Prints character name and class.
	fmt.Println(char.Header.Name)
	fmt.Println(char.Header.Class)
}

我确定这很简单/可能是安装冲突。任何建议都将不胜感激。

谢谢。


更多关于Golang新手求助:程序运行无输出也无报错怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

在同一个文件夹中,您有一个包含 package d2s 的文件,同时另一个文件包含 package main。这在 Go 语言中是不允许的,您需要将其中一个包移动到另一个文件夹中。

package main
package d2s

更多关于Golang新手求助:程序运行无输出也无报错怎么办的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


根据错误信息,问题在于同一个目录下存在两个包声明:main 包(在 tecid.go 中)和 d2s 包(在 attributes.go 中)。Go 语言要求一个目录只能包含一个包。以下是解决方案:

  1. attributes.go 移动到单独的目录,或者确保目录中所有 .go 文件都属于同一个包。
  2. 如果 attributes.go 是第三方包的一部分,检查是否正确安装了该包。

首先,检查当前目录的文件结构:

ls -la

如果 attributes.go 是本地文件,将其移动到子目录(例如 d2s/)中,并更新导入路径。示例结构调整:

目录结构:

project/
├── main.go
└── d2s/
    └── attributes.go

main.go 中导入:

import "yourmodule/d2s"

如果使用第三方包,确保正确安装:

go mod init yourmodule
go get github.com/nokka/d2s

然后,清理并重新构建:

go clean
go build

运行程序:

go run tecid.go

如果问题仍然存在,检查 go.mod 文件是否正确定义了模块和依赖。示例 go.mod

module yourmodule

go 1.21

require github.com/nokka/d2s v0.0.0

这应该解决包冲突问题,使程序正常输出或报错。

回到顶部