程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了单值上下文中的多个值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决单值上下文中的多个值?

开发过程中遇到单值上下文中的多个值的问题如何解决?下面主要结合日常开发的经验,给出你关于单值上下文中的多个值的解决方法建议,希望对你解决单值上下文中的多个值有所启发或帮助;

如果是多值返回函数,则在调用函数时不能引用具有特定结果值的字段或方法。

如果他们中的一个是error,它的存在是有 原因 (这是函数 可能会 失败),你应该 不会 绕过它,因为如果你这样做,你后面的代码 可能 也惨遭失败(如导致运行时的恐慌)。

但是,在某些情况下,您 知道 代码在任何情况下都不会失败。在这些情况下,您可以提供一个 辅助 函数(或方法),该函数将放弃 辅助 函数(或方法,error如果仍然发生,则会引起运行时恐慌)。 如果您从代码中提供了函数的输入值,并且知道它们可以工作,则可能是这种情况。和软件包 就是一个很好的例子:如果在编译时提供了有效的模板或regexp,则可以确保在运行时始终可以对它们进行分析而不会出错。因此,包提供了功能,包提供了功能:它们不返回templateregexptemplateMust(t *Template, err error) *TemplateregexpMustCompile(str string) *Regexperror,因为它们的预期用途是保证输入有效的地方。

例子:

// "text" is a valID template, parsing it will not fail
var t = template.Must(template.New("name").Parse("text"))

// `^[a-z]+\[[0-9]+\]$` is a valID regexp, always compiles
var valIDID = regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)

回到你的情况

如果 可以确定Get()不会error为某些输入值生成,则可以创建一个辅助Must()函数,该函数将不返回,error但如果仍然发生则引发运行时恐慌:

func Must(i Item, err error) Item {
    if err != nil {
        panic(err)
    }
    return i
}

但是,您不能在所有情况下都使用它,除非您确定它会成功。用法:

val := Must(Get(1)).Value

如果将Get()调用合并到辅助函数中,您甚至可以进一步简化它,让我们称之为MustGet

func MustGet(value int) Item {
    i, err := Get(value)
    if err != nil {
        panic(err)
    }
    return i
}

用法:

val := MustGet(1).Value

如何解析golang中的多个收益

使用正常功能在Golang中返回类似“ ok”的地图

解决方法

由于Go中的错误处理,我经常会遇到多个值函数。到目前为止,我的管理方式非常混乱,我正在寻找编写更简洁代码的最佳实践。

假设我具有以下功能:

type Item struct {
   Value int
   Name string
}

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

  return item,nil
}

我如何item.Value优雅地分配一个新变量。在引入错误处理之前,我的函数刚刚返回item,我可以简单地做到这一点:

val := Get(1).Value

现在,我这样做:

item,_ := Get(1)
val := item.Value

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

大佬总结

以上是大佬教程为你收集整理的单值上下文中的多个值全部内容,希望文章能够帮你解决单值上下文中的多个值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: