如何 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
具有有效值。如果 exists
是 false
,value
无效(空)。
- 许多功能return一个值和错误。如果错误不为零,则该值无意义。
所以在你的代码中,你可以这样做:
func test(i int)(r int,valid bool){
if i%2==0{
return i,true
}else{
return 0,false
}
}
或者,如果您有错误条件,return 来自您的函数的非零错误,并检查您调用它的地方是否有错误。如果出现错误,无论值 returned 是 "empty".
我需要 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
具有有效值。如果 exists
是 false
,value
无效(空)。
- 许多功能return一个值和错误。如果错误不为零,则该值无意义。
所以在你的代码中,你可以这样做:
func test(i int)(r int,valid bool){
if i%2==0{
return i,true
}else{
return 0,false
}
}
或者,如果您有错误条件,return 来自您的函数的非零错误,并检查您调用它的地方是否有错误。如果出现错误,无论值 returned 是 "empty".