返回顶部
首页 > 资讯 > 后端开发 > GO >Golang 中处理 nil 和 error 的惯用方法是什么?
  • 277
分享到

Golang 中处理 nil 和 error 的惯用方法是什么?

2024-04-04 23:04:03 277人浏览 泡泡鱼
摘要

从现在开始,我们要努力学习啦!今天我给大家带来《golang 中处理 nil 和 error 的惯用方法是什么?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文

从现在开始,我们要努力学习啦!今天我给大家带来《golang 中处理 nil 和 error 的惯用方法是什么?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我有 2 个 Go 函数:

func sampleFunction () {
    u, err := findDog(1)
    if err != nil {
        // We couldn't find the dog, print a message.
        fmt.Println(err)
        // Custom error types.
        if _, ok := err.(*dneError); ok {
            fmt.Println("Custom dog dne error for the end-user here.")
        }
    } else {
        // Do something with u.
        u.doSomething() // Is this idiomatic in Go?
                        // Should we explicility check for u != nil?
                        // Or does the if check above need to return?
                        // (even if I would like the function to be longer)

    }
}

// findDog returns a dog with a given ID. If not found, returns an error.
func findDog(id int) (*models.Dog, error) {
    found, err := models.FindDog(id)
    // Is this return scheme/flow too brittle?
    if err != nil {
        return nil, &dneError{fmt.Sprintf("Dog %d does not exist in the" +
            "database: %s", id, err.Error())}
    }
    return found, nil
}

我只是想确保我正确处理错误和零,所以我的两个主要问题是:

  1. 在 finddog 中,我在这两种情况下都正确返回 nil 吗?

  2. 在samplefunction中,不显式检查u != nil是惯用的做法,还是我这样做完全错误?

我的目标是在程序员需要时正确地向他们显示错误/问题,并在用户需要时向用户显示错误/问题,同时遵守惯用标准。感谢您抽出时间。


解决方案


在我个人看来,你处理得很好,只是一个建议,因为我不知道 models.FindDog(id) 做什么,我会仔细检查 found ,如果这是 nil 返回错误,总结 if err !=无||发现 == nil {

注意:执行此操作 return err.Error() 可能会失败

是的,这是 Go 的惯用做法。因为错误是预先处理的,所以错误意味着失败,结果是 nil,或者例如也许是部分写入的缓冲区没有任何用处。

附注我还有一个建议可以让事情变得更惯用。这个习惯用法类似于“缩进错误块,而不是代码”。您的 sampleFunction 中特别有一个 if/else,但在大多数错误检查情况(不是全部)中,您处理它并返回,然后跳过 else,流程就会继续。当你不需要缩进时为什么要缩进呢?这使得即使很长的函数也易于阅读,因为可以从上到下读取函数的预期流程,而不必在 if/else 块之间来回跳动。至少在很多情况下是这样。

我修改了某人的存储库的拉取请求,因为我有一个 if/else,其中 if 带 return 就足够了。

编辑 所以我的回答让我有点困扰,现在我记得为什么了。对于非 nil error 返回来说,这通常是惯用的,以表明其他返回值无用,但确实有例外。 请务必检查各个文档。

具体示例参见bytes.Buffer.ReadBytes

今天关于《Golang 中处理 nil 和 error 的惯用方法是什么?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

您可能感兴趣的文档:

--结束END--

本文标题: Golang 中处理 nil 和 error 的惯用方法是什么?

本文链接: https://lsjlt.com/news/596472.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Golang 中处理 nil 和 error 的惯用方法是什么?
    从现在开始,我们要努力学习啦!今天我给大家带来《Golang 中处理 nil 和 error 的惯用方法是什么?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文...
    99+
    2024-04-04
  • 彻底理解golang中什么是nil
    nil是什么 相信写过Golang的程序员对下面一段代码是非常非常熟悉的了: if err != nil { // do something.... } 当出现不等于n...
    99+
    2024-04-02
  • 在PHP7中对于Error的处理方法是什么
    这篇文章主要讲解了“在PHP7中对于Error的处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在PHP7中对于Error的处理方法是什么”吧!前段时间在项目中遇到一个当时觉得比...
    99+
    2023-06-25
  • Python 的 list.pop() 方法的 Go 习惯用法是什么?
    Golang不知道大家是否熟悉?今天我将给大家介绍《Python 的 list.pop() 方法的 Go 习惯用法是什么?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发...
    99+
    2024-04-05
  • Golang的error处理方法有哪些
    这篇文章主要介绍“Golang的error处理方法有哪些”,在日常操作中,相信很多人在Golang的error处理方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang的error处理方法有哪些...
    99+
    2023-07-02
  • golang异步任务处理的方法是什么
    在Go语言中,可以使用goroutine和channel来实现异步任务处理。 Goroutine:Goroutine是Go语言中轻...
    99+
    2023-10-27
    golang
  • Golang方法的语法是什么和怎么调用
    本篇内容主要讲解“Golang方法的语法是什么和怎么调用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang方法的语法是什么和怎么调用”吧!一、方法定义Golang中可以为任何类型定义方法...
    99+
    2023-07-05
  • 有没有办法在Golang中处理nil指针而不使用if/else?
    php小编柚子,你是否曾经在Golang编程中遇到过处理nil指针的困扰?你是否想知道是否有一种方法可以避免使用繁琐的if/else语句来处理这个问题?答案是肯定的!在Golang中,...
    99+
    2024-02-10
  • Golang数组求和的方法是什么
    本篇内容介绍了“Golang数组求和的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Golang数组在Golang中,数组是具有固...
    99+
    2023-07-05
  • Go中JSON处理方法是什么
    这篇文章主要介绍“Go中JSON处理方法是什么”,在日常操作中,相信很多人在Go中JSON处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go中JSON处理方法是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-27
  • python中异常处理的方法是什么
    Python中的异常处理方法是使用`try-except`语句块来捕获和处理异常。以下是一些常见的异常处理方法:1. 使用`try-...
    99+
    2023-08-08
    python
  • Python中的异常处理方法是什么
    这篇文章主要介绍“Python中的异常处理方法是什么”,在日常操作中,相信很多人在Python中的异常处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的异常处理方法是什么”的疑惑有所...
    99+
    2023-07-06
  • MyBatis中处理事务的方法是什么
    MyBatis中处理事务的方法有两种: 使用程序控制事务:通过获取MyBatis的SqlSession对象,调用其beginTra...
    99+
    2024-03-07
    MyBatis
  • C#中处理异常的方法是什么
    在C#中处理异常的方法可以使用try-catch语句块。在try块中编写可能抛出异常的代码,然后在catch块中捕获并处理这些异常。...
    99+
    2024-03-06
    C#
  • SpringBoot中处理异常的方法是什么
    在SpringBoot中处理异常的方法有以下几种: 使用@ControllerAdvice注解和@ExceptionHandle...
    99+
    2024-03-07
    SpringBoot
  • Python中处理异常的方法是什么
    在Python中处理异常的方法是使用try-except语句。try块中包含可能会抛出异常的代码,而except块中包含处理异常的代...
    99+
    2024-03-12
    Python
  • mysql innodb_deadlock_detect检测和处理方法是什么
    本篇内容主要讲解“mysql innodb_deadlock_detect检测和处理方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql inno...
    99+
    2024-04-02
  • Java 和 Unix 中使用 Numpy 处理数组的最佳方法是什么?
    在计算机科学领域中,数组是一种常见的数据结构。在 Java 和 Unix 系统中,处理数组是非常普遍的。而 Numpy 是一种强大的 Python 库,可以用于高效地处理数组。在本文中,我们将探讨如何使用 Numpy 在 Java 和 U...
    99+
    2023-10-06
    unix 数组 numpy
  • java调用golang的方法是什么
    Java调用Golang的方法通常使用CGO(C语言调用Go函数)技术实现。CGO是Go语言提供的一种机制,允许Go代码与C/C++...
    99+
    2023-10-20
    golang java
  • php调用golang的方法是什么
    要在PHP中调用Golang的方法,您可以通过以下两种方式实现: 使用CGO(C语言调用Golang):Golang提供了CGO(...
    99+
    2023-10-26
    php golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作