You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go自定义包不在标准库报错求助:package lesson/students is not in std

解决Go包导入错误:package lesson/students is not in std

你遇到的错误是因为模块初始化路径和项目目录结构不匹配,导致Go无法正确识别本地自定义包。

问题根源

你在project目录下执行go mod init lesson将模块名设为lesson,但students包实际位于project/lesson子目录中。Go会基于模块名匹配包的导入路径,此时你写的"lesson/students"会让Go在模块根目录(project)下寻找students目录,而非lesson子目录下的students包,因此找不到包并误以为它是标准库包。

修复方案(推荐第一种)

方案1:调整目录结构,遵循包目录与包名一致的规范

  1. 将project/lesson目录重命名为project/students,项目结构变为:
project/
    students/
        students.go
    main.go
    go.mod
  1. 保持main.go的导入语句不变:
import (
    "fmt"
    "lesson/students"
)
  1. 在project目录下执行go run main.go即可正常运行。

方案2:不修改目录,修正导入路径

如果不想改动目录结构,需要将main.go的导入路径改为模块名+子目录名(因为students包在lesson子目录下):

import (
    "fmt"
    "lesson/lesson"
)

代码中仍使用students.Student创建实例(因为students.go的包名是students)。不过这种目录名与包名不一致的写法不推荐,容易造成混淆。

方案3:重新初始化模块

若想保留原有目录结构,可重新初始化模块,在project目录下执行:

go mod init myproject

然后将main.go的导入语句改为:

import (
    "fmt"
    "myproject/lesson/students"
)

再执行go run main.go即可。

内容的提问来源于stack exchange,提问作者DJsega1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:52:38