如何在golang中返回一个空值?

Eka*_*Eka -1 function return-value go

我需要为 golang 中的函数返回一个空值,我的代码看起来像这样。

package main

import (
    "fmt"
)

func main(){
    for i:=0;i<6;i++{
        x,e := test(i)
        fmt.Println(i,x,e)
    }


}

func test(i int)(r int,err error){
    if i%2==0{
        return i,nil
    }else{
        return 
    }
}
Run Code Online (Sandbox Code Playgroud)

和它的输出

0 0 <nil>
1 0 <nil>
2 2 <nil>
3 0 <nil>
4 4 <nil>
5 0 <nil>
Run Code Online (Sandbox Code Playgroud)

而我想要这种类型的输出

0 0 <nil>
1 <nil> <nil>
2 2 <nil>
3 <nil> <nil>
4 4 <nil>
5 <nil> <nil>
Run Code Online (Sandbox Code Playgroud)

如何在golang中返回空值?

Bur*_*dar 5

“空值”是约定俗成的问题。您必须定义空值的含义。

  • 许多标准库函数返回一个无效值来表示空。例如,strings.Index返回 -1,因为所有有效值都 >=0
  • 返回指针的函数通常返回 nil
  • 有些函数返回成对的值,一个值和一个表示有效性。地图和频道也使用这个约定:
value, exists:=someMap[key]
Run Code Online (Sandbox Code Playgroud)

以上,如果exists为真,则value具有有效值。如果existsfalsevalue则无效(空)。

  • 许多函数返回一个值和错误。如果 error 非零,则该值毫无意义。

所以在你的代码中,你可以这样做:

func test(i int)(r int,valid bool){
    if i%2==0{
        return i,true
    }else{
        return 0,false
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您遇到错误情况,请从您的函数返回一个非 nil 错误并检查您调用它的地方是否存在错误。如果有错误,无论返回值是“空”。