关于您的更新代码: 首先,我给你一条最重要的建议:停止忽视错误!检查错误对于调试Go代码和运行程序来说是绝对关键的。请记住,与许多高级语言(如Javascript)不同,Go中没有例外。您对错误返回的检查是捕获这些错误的唯一机会。 For example: json.Unmarshal(byteValue, &users) 如果json无效,该行将返回一个错误。你应该检查一下。请查阅您使用的每个库函数的文档,这些库函数是您没有记住的(我记住了),并确保您正在使用这些错误消息。 好的,让我们看看你传递给IsLeapYear: jsonFile, err := os.Open("users.json") ... IsLeapYear("users.json") 当您到达IsLeapYear时,您已经超过了需要文件名的位置。您已经打开了该文件并将其值解封为Users结构。因此,您当然不需要将文件名传递给它。 让我强调一下Pim向您展示的您没有忠实遵守的内容: func IsLeapYear(date time.Time) bool Pim的IsLeapYear检查一个日期这一事实很重要。您的测试用例是需要单独检查的单独日期。但是你的IsLeapYear迭代了整个日期列表。您不能将要检查的特定日期输入到该日期。您的闰年也希望收到多个日期,但您只返回一个bool,因此单个返回值不可能