英文:
Declaring array of receiver methods
问题
这是一个使用函数数组的小例子。我想将其转换为接收器方法的数组。在第11行,数组的正确声明是什么?函数声明将从:
func addToStock(s *Stock, add int)
变为:
func (s *Stock) addToStock(add int)
英文:
Here's a small example using an array of functions. I want to convert this to an array of receiver methods. What would be the proper declaration for the array on line 11? https://play.golang.org/p/G62Cxm-OG2<br /><br />
The function declarations would change from:<br />
func addToStock(s *Stock, add int)<br /><br />
To:<br />
func (s *Stock) addToStock(add int)
答案1
得分: 0
你可以这样做:
package main
import (
"fmt"
)
type Stock struct {
qty int
}
var updaters = [2]func(*Stock, int){
func(s *Stock, i int) { s.add(i) },
func(s *Stock, i int) { s.remove(i) },
}
func main() {
s := Stock{10}
fmt.Println("库存数量 =", s.qty)
updaters[0](&s, 2)
fmt.Println("库存数量 =", s.qty)
updaters[1](&s, 5)
fmt.Println("库存数量 =", s.qty)
}
func (s *Stock) add(add int) {
s.qty += add
}
func (s *Stock) remove(sub int) {
s.qty -= sub
}
这是一个简单的Go语言程序,它定义了一个名为Stock的结构体,表示库存。程序中定义了两个函数,分别用于增加和减少库存数量。通过调用updaters数组中的函数,可以对库存数量进行更新。在main函数中,首先创建了一个库存对象s,并打印出初始的库存数量。然后通过调用updaters数组中的第一个函数,将库存数量增加了2,并再次打印出更新后的库存数量。最后,通过调用updaters数组中的第二个函数,将库存数量减少了5,并再次打印出更新后的库存数量。
英文:
You can do like these:
package main
import (
"fmt"
)
type Stock struct {
qty int
}
var updaters = [2]func(*Stock, int){
func(s *Stock, i int){s.add(i)},
func(s *Stock, i int){s.remove(i)},
}
func main() {
s := Stock{10}
fmt.Println("Stock count =", s.qty)
updaters[0](&s, 2)
fmt.Println("Stock count =", s.qty)
updaters[1](&s, 5)
fmt.Println("Stock count =", s.qty)
}
func (s *Stock)add(add int) {
s.qty += add
}
func (s *Stock)remove(sub int) {
s.qty -= sub
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论