go - 调试实现增量函数的结构

标签 go methods

我正在尝试在我的结构上实现增量函数。我不确定为什么,但当我在 main 中调用 F.incr() 时,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-

编辑:谢谢@peterSO,我需要将 incr 更改为 func (F *fib) incr(){

最佳答案

您需要更新您的方法以增加该位置的变量值。因此,您需要更改 F() 方法

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

区别在于*

关于go - 调试实现增量函数的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251937/

相关文章:

C++ - 初始化静态成员它自己的方法

go - 如何访问 proto.EnumValueOptions 扩展值

Go - 以皮秒为单位的系统时间

go - 在 Go 中显示分页小部件

scala - 为什么有些集合类除了类方法之外还有一个 "empty"实例方法?

java - FizzBu​​zz 在 Java 中使用方法

Golang for 循环不会停止

使用 mgo 适配器去嵌套对象

Java - 方法声明中的类名,返回类型应该是

delphi - 在没有 ClassType 的反序列化表单上将方法作为参数传递