pointers - Golang 处理 nil 指针异常

标签 pointers go

考虑以下代码:

list := strings.Split(somestring, "\n")

假设这会返回一个包含三个元素的列表或 slice 。然后,如果您尝试访问 slice 范围之外的内容:

someFunction(list[3])

程序可能会因为 nil 指针而崩溃。 Golang 有没有什么方法可以处理 nil 指针异常,这样程序就不会崩溃,而是可以做出适当的响应?

最佳答案

你不能在 Go 中这样做,即使你可以也不应该这样做。

始终检查您的变量和 slice ,每次您尝试在 slice 或数组上使用未经检查的索引时,上帝都会杀死一只小猫,我喜欢小猫,所以我个人认为。

解决它非常简单,example :

func getItem(l []string, i int) (s string) {
    if i < len(l) {
        s = l[i]
    }
    return
}
func main() {
    sl := []string{"a", "b"}
    fmt.Println(getItem(sl, 1))
    fmt.Println(getItem(sl, 3))
}

关于pointers - Golang 处理 nil 指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856953/

相关文章:

c - 如何使用 malloc 在 ANSI - C 中声明动态整数数组并将输入整数放入其中?

c++ - 跨类的静态字符数组行为异常

arrays - 戈朗 : unsafe dynamic byte array

xml - 解析领先的XML注释

go - Confluence kafka go 软件包与 ubuntu 22.04 兼容吗?

sql - 我的 SQL 代码应该放在 MVC 中的什么位置

c - 对于通用内存池,如何在 C 中的指针之间自由转换?

c - 表达式必须有一个指向 C 中对象类型的指针 2

c++ - 使用存储在 vector 中的函数指针

string - 从多行字符串中删除空行的 Golang 惯用方法