Ошибка в этом коде вызвана тем, что в строке вызова syscall.Getrlimit после &rLimit стоит точка с запятой вместо закрывающей скобки.
Кроме того, ошибка в сообщении компилятора указывает на несоответствие типов указателей на Rlimit. Когда вы передаете &rLimit как аргумент для функции, она ожидает получить тип *Rlimit, а вы передаете тип **Rlimit, то есть указатель на указатель на Rlimit.
Чтобы исправить ошибку, вам нужно передать адрес rLimit (тип *Rlimit) вместо &rLimit (тип **Rlimit) при вызове функций syscall.Getrlimit и syscall.Setrlimit. Вот исправленный код:
var rLimit syscall.Rlimit
if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit); err != nil {
panic(err)
}
rLimit.Cur = rLimit.Max
if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit); err != nil {
panic(err)
}
Обратите внимание, что при вызове syscall.Getrlimit мы передаем адрес &rLimit, а не rLimit, так как функция ожидает указатель на Rlimit. Но когда мы передаем &rLimit в качестве аргумента для syscall.Setrlimit, мы передаем указатель на Rlimit, поэтому не нужно использовать оператор взятия адреса &.