循环是常用的流程环节。

 1 //链表控制
 2 //链表控制的优点,是通过指针来定位,那么循环的过程中,即是可变的,实时性很强。        
 3     var tmp *datastruct.ListNode
 4     tmp = &datastruct.ListNode{Val: -1, Next: nil}
 5 
 6     i := 0
 7     for node := tmp; node != nil; node = node.Next {
 8         if i >= 10 {
 9             break
10         }
11 
12         node.Next = &datastruct.ListNode{
13             Val: i,
14             Next: nil,
15         }
16 
17         i++
18     }
19 
20     for node := tmp; node != nil; node = node.Next {
21         fmt.Println(node)
22     }
23 
24 //循环通过数据来控制
25 //由于range的时候 完成了值copy,所以range后面的arr长度为1,那么中间过程代码对于arr的追增,依旧长度为1.
26 //所以只会循环一次
27 
28     i = 0
29     arr := []int{-1}
30     for _, val := range arr {
31         fmt.Println(val)
32         if i >= 10 {
33             break
34         }
35         arr = append(arr, i)
36 
37         fmt.Println(val)
38         i++
39     }
40 
41 //那么数组如何动态控制循环呢? 类似死循环的技巧,可以实现
42     i = 0
43     arr = []int{-1}
44     for len(arr) > 0 {
45         arr = arr[1:]
46         if i >= 10 {
47             break
48         }
49 
50         arr = append(arr, i)
51 
52         fmt.Println(i)
53 
54         i++
55     }    

 

可变循环的需求: 就是通过边界上的设定,规避语言的限制(或者其他限制),从而更符合场景的实现。

 

循环也是很重要的流程环节。

posted on 2023-04-26 15:30  黑熊一只  阅读(12)  评论(0编辑  收藏  举报