Golang判断数字是奇数还是偶数的实现方法

Golang判断数字是奇数还是偶数的实现方法 你好!我写了一段代码,输入一个数字,如果是偶数则返回 true,如果是奇数则返回 false。当我运行它时,出现了以下错误: .\main.go:15:16: 返回值参数不足 已有 () 需要 (bool) 代码如下:

import "fmt"

func half (x int) bool {
    fmt. Scanf("%f", &x)
    if x % 2 == 0 {
              fmt.Println("The number is even")
	      return true
}
     if x % 2 != 0 {
	       fmt.Println("The number is odd")
	       return false
}
               return
}
func main() {
      fmt. Println("Enter a number: ")
      var x int
      fmt. Println(half)
}      

更多关于Golang判断数字是奇数还是偶数的实现方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

Vladislav:

我用来学习Go语言的一本书

你用什么书来学习Go?

你上过Go语言之旅吗?

更多关于Golang判断数字是奇数还是偶数的实现方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


那么,我该如何让代码正常工作呢?如果我删除第三个 return,它会显示另一个错误: ./prog.go:17:1: 函数末尾缺少 return 语句。 我是初学者,所以我不知道我可能遗漏了什么。

我将代码复制粘贴到 play.golang.org,并在顶部添加了 “package main” 之后,第15行位于 half 函数的最后一行,该行仅显示 return,而没有说明它应该返回什么。

编译器并不知道两个 if 语句中必定有一个会被执行。它看到的是两个 if 语句,并且需要知道如果这两个 if 条件都为 false 时该返回什么。你可以返回一个默认值 false(或 true),但就目前的代码而言,你必须返回某个值

另一种选择是,与其执行两次检查:一次检查 x % 2 == 0,然后稍后再检查 x % 2 != 0,不如直接利用逻辑关系:如果 x % 2 == 0 为 false,那么 x % 2 != 0 必然为 true。因此,你可以直接去掉第二个 if 语句:

func half(x int) bool {
	fmt.Scanf("%f", &x)
	if x%2 == 0 {
		fmt.Println("The number is even")
		return true
	}
	fmt.Println("The number is odd")
	return false
}

谢谢。它应该能正常工作。据我理解,return 应该写在函数块内部,所以如果我写了 else { 块并在其中包含 return },那会导致另一个错误,因为这两个 return 写在了所谓的子块中。

但关于变量的声明还有另一个问题。当我尝试这段代码时,它给出了另一个错误:x 已声明但未使用。我是根据我用来学习 Go 语言的书中给出的另一个示例,在 main 函数中声明它的。我原以为,如果我在 main 函数中声明变量,那么函数 half 应该会使用它,即使函数 half 写在函数 main 之前。

关于变量,我的理解是,它可以在函数 half 之前声明,也可以在 main 函数的块内部声明。然后在 main 函数中我应该写:

fmt.Println(half(x)).

当我采用这两种方式中的任何一种并运行代码时,无论我输入什么数字,它总是给我:

The number is even
 True

所以问题是:如何编写代码才能使输入函数正常工作?

你的代码有几个问题需要修复:

  1. 函数签名不匹配half函数声明返回bool,但最后有一个空的return语句
  2. 输入逻辑错误fmt.Scanf在函数内部使用,但参数传递有问题
  3. 主函数调用错误fmt.Println(half)没有传递参数

以下是修正后的代码:

package main

import "fmt"

func half(x int) bool {
    if x%2 == 0 {
        fmt.Println("The number is even")
        return true
    }
    fmt.Println("The number is odd")
    return false
}

func main() {
    fmt.Print("Enter a number: ")
    var x int
    fmt.Scanf("%d", &x)
    result := half(x)
    fmt.Println("Result:", result)
}

或者,如果你希望输入逻辑在函数内部:

package main

import "fmt"

func half() bool {
    var x int
    fmt.Print("Enter a number: ")
    fmt.Scanf("%d", &x)
    
    if x%2 == 0 {
        fmt.Println("The number is even")
        return true
    }
    fmt.Println("The number is odd")
    return false
}

func main() {
    result := half()
    fmt.Println("Result:", result)
}

主要修改:

  1. 移除了函数内部的fmt.Scanf调用,改为在主函数中处理输入
  2. 修复了return语句的问题
  3. %f改为%d用于整数输入
  4. 正确调用了half函数并传递参数
回到顶部