如何在golang中返回int或nil?
我是Java开发人员,正在学习Go。我正在为LIFO堆栈编写简单的“
pop”操作。问题是堆栈中没有值时的返回值。在Java中,我可以在肯定的情况下返回wrapper(Integer),并且在没有值的情况下返回null。从我的角度来看这很自然。
如何在Go中做类似的事情?是否有用于原语的结构包装器?我是否需要返回两个值(第二个将指示错误代码)?还是我需要抛出异常?
现在是这样的:
func (s *stack) Pop() (int, bool) { if s.size == 0 {
return 0, true
}
s.size--
val := s.stack[s.size]
return val, false
}
是好的风格吗?
回答:
由于数字不能为,除非将返回值定义为指针,否则nil
无法返回nil
整数。Go中的惯用解决方案是定义您的方法以返回多个值,例如
func (s *stack) Pop() (int, bool) { //does not exists
if ... {
return 0, false
}
//...
//v is the integer value
return v, true
}
然后,什么地方可以拨打Pop
作为
s := &stack{}if v, ok := s.Pop(); ok {
//the value exists
}
看看逗号吧,成语。
以上是 如何在golang中返回int或nil? 的全部内容, 来源链接: utcz.com/qa/430388.html