gpt4 book ai didi

string - 如何在 Go 中返回 Nil 字符串?

转载 作者:IT王子 更新时间:2023-10-29 01:22:17 28 4
gpt4 key购买 nike

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

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

然而,当我尝试编译这段代码时,出现错误:

test.go:10:3: cannot use nil as type string in return argument.

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

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

最佳答案

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

使用*string:当您没有要返回的“有用”字符串时,返回nil 指针。当你这样做时,将它分配给一个局部变量,并返回它的地址。

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

使用多个返回值:当你有一个有用的字符串要返回时,用ok = true返回它,例如:

return "useful", true

否则:

return "", false

这是它的样子:

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

在调用方,首先检查ok 返回值。如果是 true,您可以使用 string 值。否则,认为它没有用。

另见相关问题:

How do I represent an Optional String in Go?

获取和返回指向 string 的指针的替代方法:How do I do a literal *int64 in Go?

关于string - 如何在 Go 中返回 Nil 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com