Чтобы предотвратить выполнение функций без конца без возврата их возвращаемого значения, Go имеет концепцию завершающего оператора . Завершающие операторы - это определенные типы операторов, в которых легко показать, что выполнение не будет продолжаться после этого оператора. Функция с параметрами результата должна заканчиваться завершающим оператором.
A for
без break
и без условия цикла считается завершающим оператором, но for
с условием цикла не считается, даже если это условие цикла всегда истинно. (Правила могут быть расширены для подсчета for
с true
в качестве его условия в качестве завершающего оператора, но добавление слишком большого количества случаев делает определение более запутанным, чем полезным.) Ваше второе определение getIntJ
не имеет завершающего оператора.