有人可以告诉我如何改变价值 输入时钟。
基本上当我打电话给 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)
}
答案 0 :(得分:4)
是的,有可能。如果要修改该值,则必须在指针接收器上定义Add
方法,例如
func (c *Clock) Add(minutes int) Clock{
*c =New(0,minutes + int(*c))
return *c
}
基本规则是:如果您要更改接收器值,则使用指针接收器(作为参考的slice
和map
除外)。请查看以下材料,以便更好地理解方法接收器: