谁能告诉我如何改变 键入时钟。
基本上,当我调用 New() 时,我得到输出 3:04 并且在调用 ADD() 函数后,我期望值是是 03:09。如果我分配 ADD() 函数调用的值,那么我将得到 03:09 作为输出。我想知道是否可以使用指针改变 type 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)
}
最佳答案
是的,这是可能的。如果要修改该值,则必须在指针接收器上定义 Add
方法,例如
func (c *Clock) Add(minutes int) Clock{
*c =New(0,minutes + int(*c))
return *c
}
基本规则是:如果您要更改接收器值,请使用指针接收器(作为引用的 slice
和 map
除外)。查看以下资料以更好地理解方法接收器:
关于function - 改变值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557109/