dsunj08246 2017-05-02 13:53
浏览 31

这两个变体之间有什么区别?

I tried to make my own code for learning how to return multiple values in main function:

package main

import "fmt"

func main() {
    fmt.Println("Enter a integer:")
    var I int
    fmt.Scanf("%d", &I)
    fmt.Println("Accepted:", I)

    O := half(I)
    fmt.Println("Returned:", O)
}

func half(N int) (int, bool) {
    var NA int
    NA = N / 2
    if NA%2 == 0 {
        fmt.Println("even")
        return NA, true
    } else {
        fmt.Println("odd")
        return NA, false
    }
}

And given error: half.go|11| multiple-value half() in single-value context. However another variant are working:

package main

import (
    "fmt"
)

func half(number int) (int, bool) {
    if x := int(number % 2); x == 0 {
        return x, true
    } else {
        return x, false
    }
}

func main() {
    fmt.Println(half(1))
    fmt.Println(half(2))
}

What am I doing wrong? How to overcome my error?

  • 写回答

2条回答 默认 最新

  • doutan5337 2017-05-02 13:57
    关注

    fmt.Println accepts any number of arguments, so is ok accepting the results of half.

    In the first one, you need to provide places for both variables. Either:

    i,b := half(2)

    or

    i, _ := half(2)

    if you don't need the second return.

    评论

报告相同问题?

悬赏问题

  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码