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

编写Go火星年龄换算程序报unexpected mars语法错误如何解决?

错误原因

你的代码存在两处不符合Go语法规范的写法,直接触发了编译报错:

  1. Go语言不支持在函数内部嵌套定义命名函数,你将mars函数定义在了main函数的代码块内部,编译器识别到函数定义关键字时无法匹配预期的语句语法,因此抛出unexpected mars错误
  2. mars函数的入参age没有声明变量类型

修复方案

方案1:将mars函数移到main外部定义(推荐写法)

package main
import "fmt"

func mars(age int) int{
	days := age*365
	return days/687
}

func main() {
	var age int
	fmt.Scanln(&age)
	mars_age := mars(age)
	fmt.Println(mars_age)
}

方案2:在main内部使用匿名函数实现

如果你确实需要把逻辑封装在main内部,可以改用匿名函数赋值给变量的写法:

package main
import "fmt"

func main() {
	var age int
	fmt.Scanln(&age)
	mars := func(age int) int{
		days := age*365
		return days/687
	}
	mars_age := mars(age)
	fmt.Println(mars_age)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:08