отладка структуры, реализующей функцию приращения - PullRequest
2 голосов
/ 16 февраля 2020

Я пытаюсь реализовать функцию увеличения в моей структуре. Я не уверен почему, но похоже, что когда я вызываю F.incr() в main, параметры структуры fib остаются неизменными. Я думаю, что у меня может быть неправильное представление о том, что я делаю в своей функции incr(), хотя я не могу найти нужную документацию. Чего мне не хватает?

type fib struct {
    i uint64 
    fa uint64   
    fb uint64 
}

func (F fib) incr(){
    F.i++   
    F.fa, F.fb = F.fa+F.fb, F.fa
}

func main() {
    F := fib{1,1,0}
    var sum uint64 = 0
    for; F.i <= 10; F.incr() {
        k := f(F.i, F.fb, F.fa)
        fmt.Printf("calculating the %vth f(i,F_%v, F_%v): %v\n", F.i, F.i-1, F.i, k)    
—snip-

edit: спасибо @peterSO, мне нужно было изменить incr на func (F *fib) incr(){

1 Ответ

2 голосов
/ 16 февраля 2020

Вам необходимо обновить свой метод, чтобы увеличить значение переменной в местоположении. Следовательно, вам нужно изменить F() метод

func (F *fib) incr(){
    F.i++   
    F.fa, F.fb = F.fa+F.fb, F.fa
}

Разница в *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...