编写Go火星年龄换算程序报unexpected mars语法错误如何解决?
错误原因
你的代码存在两处不符合Go语法规范的写法,直接触发了编译报错:
- Go语言不支持在函数内部嵌套定义命名函数,你将
mars函数定义在了main函数的代码块内部,编译器识别到函数定义关键字时无法匹配预期的语句语法,因此抛出unexpected mars错误 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
相关产品推荐
相关产品推荐

