Why am I seeing this error "./main.go:7:6: syntax error: unexpected mars, expecting ("?

huangapple go评论85阅读模式
英文:

Why am I seeing this error "./main.go:7:6: syntax error: unexpected mars, expecting ("?

问题

这是我的程序。我正在尝试将一个人的年龄转换为火星上的年龄。看起来一切都没问题,但我仍然遇到了这个错误。

package main

import "fmt"

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

这是你的程序的中文翻译。

英文:

Here is my program. I am trying to convert a person's age on mars. It looks everything is fine here but still I am getting this error

package main
import "fmt"

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

答案1

得分: 1

尝试:

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)
}
  • 命名的 func 必须在同一级别(例如 mainmars
  • 函数参数必须有类型 age int

注意 Go 也允许匿名函数(也称为 lambda)。在这种情况下,你可以在 main 中定义 mars,并将其赋值给一个变量,例如 mars := func(age int) int { ... }

英文:

Try:

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)
}
  • Named func's must be at the same level (i e. main, mars)
  • Function parameters must have types age int

> NOTE Go permits anonymous functions (aka lambdas) too. In that case, you could define mars in main and you could assign it to a variable e.g. mars := func(age int) int { ... }

答案2

得分: 0

请参考这篇帖子,了解如何使用嵌套函数:https://stackoverflow.com/a/42423998/2693654

你需要像这样编写代码:

package main
import "fmt"

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

Please see this post on how to use nested functions https://stackoverflow.com/a/42423998/2693654

You need to have something like:

package main
import "fmt"

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

答案3

得分: 0

func main() {
mars := func (参数类型) 返回类型 {
返回 ......
}

返回值 := mars(贝拉 贝拉 贝拉)
}

英文:
func main() {
   mars := func (param type) return_type {
       return .....
   }

   returnedValue := mars(bela bela bela)
}

huangapple
  • 本文由 发表于 2021年12月7日 11:52:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/70254738.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定