funct() { var nums = []int{1, 2, 3, 4, 5} // 顺序1 for _, n := range nums { fmt.Println(n) } // 顺序2, 一般不这样吧 for i := 0; i < len(nums); i++ { fmt.Println(nums[i]) }
// 逆序1, 普通程序员 for i := len(nums) - 1; i >= 0; i-- { fmt.Println(nums[i]) } // 逆序2, nice简洁、赞 for i := range nums { fmt.Println(nums[len(nums)-i-1]) } // 逆序3, channel实现 for n := range reverse(nums) { fmt.Println(n) } // 逆序4, defer实现, 不是一般程序员 for _, n := range nums { defer fmt.Println(n) } }
funcreverse(lst []int)chanint { ret := make(chanint) gofunc() { for i := range lst { ret <- lst[len(lst)-1-i] } close(ret) }() return ret }