面试题答案
一键面试相对路径导入
在 main.go
中使用相对路径导入 pkg2
,假设 pkg2
所在目录相对于 main.go
的路径,示例如下:
package main
import (
"../pkg2"
)
- 适用场景:适用于本地项目内不同包之间的相对引用,在项目结构相对稳定,且不涉及复杂的多模块或跨项目引用时使用方便。
- 优点:相对路径直观反映了包之间在项目内的相对位置关系,对于小型项目或同一项目内简单的包组织,代码简洁易读。
- 缺点:当项目结构发生较大变动,比如包的移动等,相对路径需要手动修改,维护成本较高;并且相对路径导入在跨项目复用代码时可能会因为项目结构差异而导致导入失败。
绝对路径导入
在Go语言中,绝对路径导入基于Go模块机制。假设项目初始化了Go模块(在 my_project
目录下执行 go mod init my_project
),pkg2
作为第三方包,若 pkg2
遵循Go模块规范。假设 pkg2
模块路径为 example.com/pkg2
,在 main.go
中导入如下:
package main
import (
"example.com/pkg2"
)
- 适用场景:适用于引入第三方包,以及在大型项目中有明确模块管理和跨项目复用需求的场景。
- 优点:绝对路径基于模块路径,不依赖于本地项目的具体目录结构,当项目结构变动或在不同环境中部署时,导入依然稳定;便于跨项目复用代码,只要模块路径一致即可正常导入。
- 缺点:对于本地项目内包的引用,如果使用绝对路径,可能需要将本地项目也作为一个模块发布,相对繁琐;同时,绝对路径可能不够直观,尤其是在项目内部包之间引用时,可能会隐藏包在项目内的实际位置关系。