我是一名Java开发者,正在学习Go语言。 我正在为一个LIFO栈写简单的“pop”操作。问题是当栈中没有值时如何返回值。在Java中,我可以在正常情况下返回一个包装器(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
}
这是好的风格吗?
*int
。不过我不确定这是否合适。 - Ry-panic()
和recover()
,但它们不是异常。将错误视为值,并考虑优雅地处理它们;-) - kostix