【问题标题】:Golang addition [closed]Golang添加[关闭]
【发布时间】:2021-03-17 11:58:43
【问题描述】:

我想构建一个“加法工具”或计算器,它从 0 开始并将您输入的数字添加到当前结果中。 例子: 你从 0 开始, 你输入10, 结果:10, 你输入20, 结果:30 等等,但我不知道如何构建这段代码,是的,我是一个初学者,很抱歉问了这么简单的问题。 我得到的是这样的:


import (
    "fmt"
)

func main() {
    var x int
    var y int
    x = 0
    //var z int
    //result = z
    fmt.Printf("Geben Sie eine Zahl zum addieren ein: ", x)
    y, _ = fmt.Scanf("%d", &y)
    fmt.Println(add(0, y))
}

func add(x, y int) int {
    return x + y
}

【问题讨论】:

  • 开始查看抛出的错误诊断信息。查看Println 的文档,即它采用什么类型作为参数,看看你传递了什么
  • 不要忽略错误。
  • 还要注意y, _ = fmt.Scanf("%d", &y) 绝对不正确:您将y 的地址传递给函数——表面上是为了让后者向该变量写入一些内容——然后使其中之一该函数返回的值会覆盖同一变量的内容。请阅读fmt.Scanf 上的文档。
  • 它甚至没有显示任何问题,除了 Printf 由于末尾的 x 看起来很奇怪,我删除了它

标签: go calculator addition


【解决方案1】:

将相加的结果存储在一个变量中并重复使用:

import (
    "fmt"
)

func main() {
    var x int = 0
    for {
        var y int
        fmt.Printf("Geben Sie eine Zahl zum addieren ein: ", x)
        y, _ = fmt.Scanf("%d", &y)
        x = add(x, y)
        fmt.Println(x)
    }
}

func add(x, y int) int {
    return x + y
}

【讨论】:

  • 这不起作用,原因来自文档:Scanf 扫描从标准输入读取的文本,将连续的空格分隔值存储到由格式确定的连续参数中。 它返回成功扫描的项目数。您将fmt.Scanf 的结果设置为存储输入的变量。所以y在你的情况下将是每次1
  • @alessiosavi,当然,但我解释说 OP 在我对他们的问题的评论中犯了错误。答案仅涉及所述问题,不应该提供完善的现成解决方案;否则那将是家庭作业式的问答环节。
【解决方案2】:
package main

import (
    "fmt"
)

func main() {
    var x int
    x = 0

    for {
        fmt.Printf("Geben Sie eine Zahl zum addieren ein: %d\n", x)
        var y int
        _, err := fmt.Scanf("%d\n", &y)
        if err != nil {
            panic(err)
        }
        oldX := x
        x = add(x, y)
        fmt.Printf("SUM: of %d+%d=%d\n", oldX, y, x)
    }
}

func add(x, y int) int {
    return x + y
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多