改变价值

时间:2017-06-15 01:25:46

标签: function pointers go

有人可以告诉我如何改变价值 输入时钟

基本上当我打电话给 New()时,我得到输出 3:04 ,在调用 ADD()函数后,我希望值为是 03:09 。如果我指定了 ADD()函数调用的值,那么我将 03:09 作为输出。我想知道是否可以使用指针改变类型Clock 的值?

package main

import "fmt"

const testVersion = 4

type Clock int

func New(hour, minute int) Clock {
    result := (hour*60 + minute) % (24*60)
    if result < 0 {
        result = result + 24*60
    }

    return Clock(result)
}

func (c Clock) String() string {
    return fmt.Sprintf("%02v:%02v", int(c/60), int(c%60))
}

func (c Clock) Add(minutes int) Clock{
    newC:=New(0,minutes + int(c))
    //fmt.Println(a)
}

func main() {
    result := New(3, 4)
    fmt.Println(result)
    result.Add(5)
    fmt.Println(result)
}

1 个答案:

答案 0 :(得分:4)

是的,有可能。如果要修改该值,则必须在指针接收器上定义Add方法,例如

func (c *Clock) Add(minutes int) Clock{
    *c =New(0,minutes + int(*c))

    return *c
}

基本规则是:如果您要更改接收器值,则使用指针接收器(作为参考的slicemap除外)。请查看以下材料,以便更好地理解方法接收器:

  1. Methods

  2. 上的围棋之旅
  3. 常见问题解答:Should I define methods on values or pointers?