Можно ли как-то обойти "infinite recursive call", чтобы его не было

Рейтинг: -3Ответов: 1Опубликовано: 10.08.2023

в 14 строке пишет "infinite recursive call"

package main

import (
    "fmt"
)

func append([]int) []int{
    var num int
    list := []int{}
    fmt.Scan(&num)
    list2 := append(list) // вот тут пишет "infinite recursive call"
    return list2

}

func main() {
    lis2t := []int{}
    value := append(lis2t)
    fmt.Println(value)

}

нужно чтоб не писал в 14 строке "infinite recursive call")

Ответы

▲ 1

Я беру глыбу мрамора и отсекаю от нее все лишнее (© Микельанджело Буанаротти) ... а рекурсию заменяю на итерацию.

func append([]int) []int{
    var num int
    var err error
    for err == nil {
        _, err = fmt.Scan(&num)
    }
    return nil
}

В случае, если вам не нужно выходить из функции, не проверяйте ошибку ;)

Серьезно. Опишите, что вы хотите получить. Большая вероятность, что правильно задав вопрос, вы сами найдете ответ.

PS Использовать имя встроенной функции append в качестве имени пользовательской функции - плохая идея.