Golang博客切片和内部机制

huangapple go评论129阅读模式
英文:

Golang blog slices and internals

问题

// Filter函数返回一个新的切片,其中只包含满足f()条件的s的元素
func Filter(s []int, fn func(int) bool) []int {
var p []int // == nil
for _, v := range s {
if fn(v) {
p = append(p, v)
}
}
return p
}

我不知道如何使用这个函数,任何帮助将不胜感激。

英文:
  1. // Filter returns a new slice holding only
  2. // the elements of s that satisfy f()
  3. func Filter(s []int, fn func(int) bool) []int {
  4. var p []int // == nil
  5. for _, v := range s {
  6. if fn(v) {
  7. p = append(p, v)
  8. }
  9. }
  10. return p
  11. }

I have no i idea how to use this function, any help would be appreciated.

答案1

得分: 1

  1. package main
  2. import "fmt"
  3. // Filter返回一个新的切片,其中只包含满足f()条件的元素
  4. func Filter(s []int, fn func(int) bool) []int {
  5. var p []int // == nil
  6. for _, v := range s {
  7. if fn(v) {
  8. p = append(p, v)
  9. }
  10. }
  11. return p
  12. }
  13. func odd(i int) bool {
  14. return i%2 != 0
  15. }
  16. func even(i int) bool {
  17. return !odd(i)
  18. }
  19. func main() {
  20. v := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  21. fmt.Println(Filter(v, odd))
  22. fmt.Println(Filter(v, even))
  23. }
  1. package main
  2. import "fmt"
  3. // Filter函数返回一个新的切片,其中只包含满足f()条件的元素
  4. func Filter(s []int, fn func(int) bool) []int {
  5. var p []int // == nil
  6. for _, v := range s {
  7. if fn(v) {
  8. p = append(p, v)
  9. }
  10. }
  11. return p
  12. }
  13. func odd(i int) bool {
  14. return i%2 != 0
  15. }
  16. func even(i int) bool {
  17. return !odd(i)
  18. }
  19. func main() {
  20. v := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  21. fmt.Println(Filter(v, odd))
  22. fmt.Println(Filter(v, even))
  23. }
英文:

https://play.golang.org/p/Asc4v08wDO

  1. package main
  2. import "fmt"
  3. // Filter returns a new slice holding only
  4. // the elements of s that satisfy f()
  5. func Filter(s []int, fn func(int) bool) []int {
  6. var p []int // == nil
  7. for _, v := range s {
  8. if fn(v) {
  9. p = append(p, v)
  10. }
  11. }
  12. return p
  13. }
  14. func odd(i int) bool {
  15. return i%2 != 0
  16. }
  17. func even(i int) bool {
  18. return !odd(i)
  19. }
  20. func main() {
  21. v := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  22. fmt.Println(Filter(v, odd))
  23. fmt.Println(Filter(v, even))
  24. }

huangapple
  • 本文由 发表于 2016年9月26日 16:52:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/39698436.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定