为何goimports未按预期对Go文件导入语句排序分组?
问题分析与解决
你的问题核心原因是goimports默认仅将格式化后的代码输出到终端,不会直接修改原文件,所以你看到原文件的导入语句没有变化。
验证方式
执行goimports file1.go时,终端会输出整理好的代码(导入已按标准库、第三方库分组排序),但原file1.go的内容不会被修改。比如输出的正确导入结构应该是:
import ( "context" "fmt" "github.com/google/uuid" "github.com/jmoiron/sqlx" )
解决方法
要让goimports直接修改原文件,需要添加-w(write)参数:
goimports -w file1.go
执行这个命令后,原文件的导入语句就会被自动按规则排序分组。
额外说明
goimports的分组规则是:标准库包为一组,第三方包为另一组,两组之间用空行分隔;同一组内的包会按字母顺序排序。你的示例代码经过处理后,标准库的context、fmt会排在前面,第三方的github.com/google/uuid、github.com/jmoiron/sqlx会按字母顺序排在后面。
内容的提问来源于stack exchange,提问作者sprutex
相关产品推荐
相关产品推荐

