相关疑难解决方法(0)

单值上下文中的多个值

由于Go中的错误处理,我经常最终得到多个值函数.到目前为止,我管理它的方式非常混乱,我正在寻找编写更清晰代码的最佳实践.

假设我有以下功能:

type Item struct {
   Value int
   Name string
}

func Get(value int) (Item, error) {
  // some code

  return item, nil
}
Run Code Online (Sandbox Code Playgroud)

如何item.Value优雅地分配新变量.在介绍错误处理之前,我的函数刚刚返回item,我可以简单地执行此操作:

val := Get(1).Value
Run Code Online (Sandbox Code Playgroud)

现在我这样做:

item, _ := Get(1)
val := item.Value
Run Code Online (Sandbox Code Playgroud)

有没有办法直接访问第一个返回的变量?

error-handling return-value go multiple-return-values

97
推荐指数
4
解决办法
9万
查看次数

在普通函数中返回Golang中的'ok'映射

在Go中,以下工作(注意一个地图的使用有一个返回,另一个有两个返回)

package main

import "fmt"

var someMap = map[string]string { "some key": "hello" }

func main() {
    if value, ok := someMap["some key"]; ok {
        fmt.Println(value)
    }

    value := someMap["some key"]
    fmt.Println(value)
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何用自己的功能做同样的事情.是否有可能与可选的返回类似的行为map

例如:

package main

import "fmt"

func Hello() (string, bool) {
    return "hello", true
}

func main() {
    if value, ok := Hello(); ok {
        fmt.Println(value)
    }

    value := Hello()
    fmt.Println(value)
}
Run Code Online (Sandbox Code Playgroud)

不会编译(由于错误multiple-value Hello() in single-value context)...有没有办法使这个语法适用于该函数Hello()

return-value go multiple-return-values

17
推荐指数
1
解决办法
5432
查看次数