← 中文资源

简体中文版本

Go 编译错误: imported and not used

修复 Go 编译器错误 imported and not used:通过引用、对齐或空导入(blank import)处理已添加但未在代码中使用的包。

阅读英文原文

症状

构建因 imported and not used: "fmt" 而中止,尽管该包在项目别处明显被引用。该错误是按文件报告的,因此问题出在某个具体文件,而非整个包。

诊断

在每个被报告的文件中搜索该包的限定符:

go build ./... 2>&1 | grep "imported and not used"

若文件导入了 fmt 却从未调用 fmt.,该导入即已失效。构建标签也可能让唯一使用该包的文件在当前构建中被排除。

修复

删除失效导入,或对仅为副作用的包使用空导入:

import (
    _ "github.com/lib/pq" // registers the driver via init()
    "fmt"
)

同时运行 goimports,让未使用的导入被自动清理。

验证

go build ./... 与 go vet ./... 均通过,说明每个导入在其文件中都有真实使用,整个模块可干净编译。