如何在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

回到顶部