Go 中如何返回 Nil 字符串?

2024-03-08

我有一个函数在某些情况下返回一个字符串,即当程序在 Linux 或 MacOS 中运行时,否则返回值应该为 nil,以便在代码中进一步省略一些特定于操作系统的检查。

func test() (response string) {
    if runtime.GOOS != "linux" {  
        return nil
    } else {
        /* blablabla*/
    }
}

但是,当我尝试编译此代码时,出现错误:

test.go:10:3:不能在返回参数中使用 nil 作为字符串类型。

如果我只返回一个空字符串,例如return "",我无法将此返回值与nil进一步在代码中。

那么问题是如何返回正确的nil字符串值呢?


如果你不能使用"",返回一个类型的指针*string;或者——因为这是 Go——你可以声明多个返回值,例如:(response string, ok bool).

Using *string: 返回nil当您没有“有用”字符串可返回时,可以使用指针。当您这样做时,将其分配给局部变量,并返回其地址。

func test() (response *string) {
    if runtime.GOOS != "linux" {
        return nil
    } else {
        ret := "useful"
        return &ret
    }
}

使用多个返回值:当您有一个有用的字符串要返回时,请使用以下命令返回它ok = true, e.g.:

return "useful", true

否则:

return "", false

它看起来是这样的:

func test() (response string, ok bool) {
    if runtime.GOOS != "linux" {
        return "", false
    } else {
        return "useful", true
    }
}

在调用者处,首先检查ok返回值。如果那是true,您可以使用string价值。否则,视为无用。

另请参阅相关问题:

如何在 Go 中表示可选字符串? https://stackoverflow.com/questions/30731687/how-do-i-represent-an-optional-string-in-go/30741287#30741287

获取和返回指针的替代方法string: 如何在 Go 中执行文字 *int64 ? https://stackoverflow.com/questions/30716354/how-do-i-do-a-literal-int64-in-go/30716481#30716481

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 中如何返回 Nil 字符串? 的相关文章

随机推荐