如何 return golang 中的空值?

How to return an empty value in golang?

我需要 return 为 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 
    }
}

及其输出

0 0 <nil>
1 0 <nil>
2 2 <nil>
3 0 <nil>
4 4 <nil>
5 0 <nil>

而我想要这种类型的输出

0 0 <nil>
1 <nil> <nil>
2 2 <nil>
3 <nil> <nil>
4 4 <nil>
5 <nil> <nil>

如何return在golang中清空值?

"Empty value" 是约定俗成的问题。您必须定义空值的含义。

  • 许多标准库函数 return 一个无效值来表示空。例如,strings.Index returns -1,因为所有有效值都是 >=0
  • 函数 returning 指针通常 return nil
  • 有 return 对值的函数,一个值和一个表示有效性。地图和频道也使用此约定:
value, exists:=someMap[key]

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

  • 许多功能return一个值和错误。如果错误不为零,则该值无意义。

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

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

或者,如果您有错误条件,return 来自您的函数的非零错误,并检查您调用它的地方是否有错误。如果出现错误,无论值 returned 是 "empty".