douyun8885 2018-06-18 18:17
浏览 50
已采纳

将两个返回值传递给具有一个参数的函数

I want to do this:

R, _ := strconv.Atoi(reader.ReadString(" ")) // reader = bufio.NewReader()

and the problem is, that strconv.Atoi expects one argument, but reader.ReadString() returns not only the string, but also the "err". Is there a way to solve this without creating variables or generally on just one line?

  • 写回答

2条回答 默认 最新

  • dosrmo0442 2018-06-19 13:25
    关注

    In Go, write a readInt function to hide the complexity and always check for errors. Other answers have bugs: Howl (drops last number) and Raduan Santos (doesn't compile).

    For example,

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "log"
        "strconv"
        "strings"
    )
    
    func readInt(r *bufio.Reader) (int, error) {
        const delim = ' '
        str, err := r.ReadString(delim)
        if err != nil && len(str) == 0 {
            return 0, err
        }
        str = strings.TrimSuffix(str, string(delim))
        return strconv.Atoi(str)
    }
    
    func main() {
        input := "93 31 11 11"
        fmt.Println(input)
        rdr := bufio.NewReader(strings.NewReader(input))
        for {
            n, err := readInt(rdr)
            if err != nil {
                if err == io.EOF {
                    break
                }
                log.Fatal(err)
            }
            fmt.Println(n)
        }
    }
    

    Output:

    93 31 11 11
    93
    31
    11
    11
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R