已解决:学习Golang时如何简化代码?
已解决:学习Golang时如何简化代码? 我正在学习Go语言。下面的代码是一个实验,基本上不言自明。它产生了预期的结果。
package main
import "fmt"
func main() {
a := []int{1, 2, 3}
z := map[string]func(x int) []int{
"add": func(x int) (b []int) {
b = a
for k, _ := range b {
b[k] += x
}
return
},
"sub": func(x int) (b []int) {
b = a
for k, _ := range b {
b[k] -= x
}
return
},
}
fmt.Println("add 3:", z["add"](3))
fmt.Println("sub 100:", z["sub"](100))
}
我认为 b = a 可以在保持相同行为的情况下被消除,但该怎么做呢?
我想练习我对切片、映射和匿名函数的理解,这就是我采用这种方法的原因。
注意:我想遍历整个 a 切片,无论它是3个元素还是100个。
编辑:Stack overflow 来帮忙了!。这基本上归结为我根本不需要重新赋值,并且我使用索引的思路是正确的。以下是我最终得到的代码:
package main
import "fmt"
func main() {
a := []int{1, 2, 3}
z := map[string]func(x int) []int{
"add": func(x int) []int {
for k, _ := range a {
a[k] += x
}
return a
},
"sub": func(x int) []int {
for k, _ := range a {
a[k] -= x
}
return a
},
}
fmt.Println("add 3:", z["add"](3))
fmt.Println("sub 100:", z["sub"](100))
}
更多关于已解决:学习Golang时如何简化代码?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复


