当前位置: 首页 > 面试题库 >

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

裴卓君
2023-03-14
问题内容

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

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

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

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

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

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

谢谢。


问题答案:

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

当您没有要返回的“有用”字符串时,使用*string:return 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值。否则,认为它没有用。



 类似资料:
  • 问题内容: 我是Java开发人员,正在学习Go。我正在为LIFO堆栈编写简单的“ pop”操作。问题是堆栈中没有值时的返回值。在Java中,我可以在肯定的情况下返回wrapper(Integer),并且在没有值的情况下返回null。从我的角度来看这很自然。 如何在Go中做类似的事情?是否有用于原语的结构包装器?我是否需要返回两个值(第二个将指示错误代码)?还是我需要抛出异常? 现在是这样的: 是好

  • 问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是

  • 问题内容: 在我的AJAX调用中,我想将字符串值返回到调用页面。 我应该使用还是返回一个字符串? 问题答案: 您可以使用返回一个纯字符串: 默认情况下返回a 作为其contentType。这是可重载的,因此您还可以执行以下操作:

  • 问题内容: 我正在使用CIFilters将图像转换为灰度并应用一些图像处理效果。在UIImageView中显示输出有效;图像将显示,并且已按预期进行了修改。 但是,每次调用UIImageJPEGRepresentation似乎都不返回任何数据。它永远都行不通。使用原始彩色图像调用UIImageJPEGRepresentation效果很好。 这里发生了什么?为什么在显示图像时jpeg转换会失败?不会

  • 问题内容: 我在Swift 3中将字符串转换为日期时遇到问题。这是我的代码,在转换时它会返回nil值。 问题答案: 您为小时和时区设置了错误的格式说明符。用这个: 表示12小时格式,因此没有15小时。请改用 是无效的时区说明符。使用替代 除非将星期五缩短为保加利亚语,否则请使用英语语言环境

  • 问题内容: 我创建了一个Web服务,该服务返回。这必须能够返回工作正常的。但它也应该能够返回。知道如何使用来传送A 吗? 问题答案: JavaMail具有一个可用于此目的的: mime类型中的in决定它将字符串转换为字节时使用的编码方式。