Sync
This commit is contained in:
		
							parent
							
								
									cd080ddda2
								
							
						
					
					
						commit
						ba7812bfdd
					
				@ -1,12 +0,0 @@
 | 
				
			|||||||
package main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "fmt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func main() {
 | 
					 | 
				
			||||||
	var i interface{} = "hello"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	s := i.(string)
 | 
					 | 
				
			||||||
	fmt.Println(s)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fmt.Printf("%v- %T\n", s, s)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										29
									
								
								tour_of_go/l5/exercise-images/exercise-images.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								tour_of_go/l5/exercise-images/exercise-images.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"golang.org/x/tour/pic"
 | 
				
			||||||
 | 
						"image"
 | 
				
			||||||
 | 
						"image/color"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Image struct{
 | 
				
			||||||
 | 
						w, h int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (i Image) Bounds() image.Rectangle {
 | 
				
			||||||
 | 
						return image.Rect(0, 0, i.w, i.h)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (i Image) ColorModel() color.Model {
 | 
				
			||||||
 | 
						return color.RGBAModel
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (i Image) At(x, y int) color.Color {
 | 
				
			||||||
 | 
						v := uint8(x^y)
 | 
				
			||||||
 | 
						return color.RGBA{v, v, 255, 255}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						m := Image{320, 240}
 | 
				
			||||||
 | 
						pic.ShowImage(m)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								tour_of_go/l5/exercise-images/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tour_of_go/l5/exercise-images/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					module exercise-images.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.24.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require golang.org/x/tour v0.1.0
 | 
				
			||||||
							
								
								
									
										2
									
								
								tour_of_go/l5/exercise-images/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tour_of_go/l5/exercise-images/go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					golang.org/x/tour v0.1.0 h1:OWzbINRoGf1wwBhKdFDpYwM88NM0d1SL/Nj6PagS6YE=
 | 
				
			||||||
 | 
					golang.org/x/tour v0.1.0/go.mod h1:DUZC6G8mR1AXgXy73r8qt/G5RsefKIlSj6jBMc8b9Wc=
 | 
				
			||||||
							
								
								
									
										12
									
								
								tour_of_go/l5/images.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								tour_of_go/l5/images.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"image"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						m := image.NewRGBA(image.Rect(0, 0, 100, 100))
 | 
				
			||||||
 | 
						fmt.Println(m.Bounds())
 | 
				
			||||||
 | 
						fmt.Println(m.At(0, 0).RGBA())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										36
									
								
								tour_of_go/l6/generics.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								tour_of_go/l6/generics.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type List[T any] struct {
 | 
				
			||||||
 | 
						next *List[T]
 | 
				
			||||||
 | 
						val	T
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (l *List[T]) Prepend(v T) *List[T] {
 | 
				
			||||||
 | 
						return &List[T]{next: l, val: v}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (l *List[t]) Len() int {
 | 
				
			||||||
 | 
						count := 0
 | 
				
			||||||
 | 
						for cur := l; cur != nil; cur = cur.next {
 | 
				
			||||||
 | 
							count++
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return count
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						var test_list *List[int]
 | 
				
			||||||
 | 
						fmt.Println(test_list)
 | 
				
			||||||
 | 
						test_list = test_list.Prepend(10)
 | 
				
			||||||
 | 
						fmt.Println(test_list)
 | 
				
			||||||
 | 
						test_list = test_list.Prepend(20)
 | 
				
			||||||
 | 
						fmt.Println(test_list)
 | 
				
			||||||
 | 
						fmt.Printf("The list has %d items\n", test_list.Len())
 | 
				
			||||||
 | 
						test_list = test_list.Prepend(30)
 | 
				
			||||||
 | 
						fmt.Println(test_list)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						fmt.Printf("The list has %d items", test_list.Len())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								tour_of_go/l6/index.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								tour_of_go/l6/index.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Index[T comparable](s []T, x T) int {
 | 
				
			||||||
 | 
						for i, v := range s {
 | 
				
			||||||
 | 
							if v == x {
 | 
				
			||||||
 | 
								return i
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return -1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						si := []int{10, 20, 15, -10}
 | 
				
			||||||
 | 
						fmt.Println(Index(si, 15))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ss := []string{"foo", "bar", "bax"}
 | 
				
			||||||
 | 
						fmt.Println(Index(ss, "hello"))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								tour_of_go/l7/buffered-channels.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								tour_of_go/l7/buffered-channels.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						ch := make(chan int, 2)
 | 
				
			||||||
 | 
						ch <- 1
 | 
				
			||||||
 | 
						ch <- 2
 | 
				
			||||||
 | 
						// ch <- 3
 | 
				
			||||||
 | 
						fmt.Println(<-ch)
 | 
				
			||||||
 | 
						fmt.Println(<-ch)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								tour_of_go/l7/channels.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								tour_of_go/l7/channels.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func sum(s []int, c chan int) {
 | 
				
			||||||
 | 
						sum := 0
 | 
				
			||||||
 | 
						for _, v := range s {
 | 
				
			||||||
 | 
							sum += v
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						c <- sum	// Send the sum into the channel
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						s := []int{7, 2, 8, -8, 4, 0}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c := make(chan int)
 | 
				
			||||||
 | 
						go sum(s[:len(s)/2], c)
 | 
				
			||||||
 | 
						go sum(s[len(s)/2:], c)
 | 
				
			||||||
 | 
						x, y := <-c, <-c	// Receive from the channel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fmt.Println(x, y, x+y)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								tour_of_go/l7/default-selection.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								tour_of_go/l7/default-selection.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						start := time.Now()
 | 
				
			||||||
 | 
						tick := time.Tick(100 * time.Millisecond)
 | 
				
			||||||
 | 
						boom := time.After(500 * time.Millisecond)
 | 
				
			||||||
 | 
						elapsed := func() time.Duration {
 | 
				
			||||||
 | 
							return time.Since(start).Round(time.Millisecond)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							select {
 | 
				
			||||||
 | 
							case <- tick:
 | 
				
			||||||
 | 
								fmt.Printf("[%6s] tick.\n", elapsed())
 | 
				
			||||||
 | 
							case <- boom:
 | 
				
			||||||
 | 
								fmt.Printf("[%6s] BOOM!\n", elapsed())
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								fmt.Printf("[%6s]     .\n", elapsed())
 | 
				
			||||||
 | 
								time.Sleep(50 * time.Millisecond)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										58
									
								
								tour_of_go/l7/exercise-binary-tree.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								tour_of_go/l7/exercise-binary-tree.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"golang.org/x/tour/tree"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// type Tree struct {
 | 
				
			||||||
 | 
					// 	Left	*Tree
 | 
				
			||||||
 | 
					// 	Value	int
 | 
				
			||||||
 | 
					// 	Right	*Tree
 | 
				
			||||||
 | 
					// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Walk(t *tree.Tree, ch chan int) {
 | 
				
			||||||
 | 
						defer close(ch)
 | 
				
			||||||
 | 
						var walker func(t *tree.Tree)
 | 
				
			||||||
 | 
						walker = func (t *tree.Tree) {
 | 
				
			||||||
 | 
							if t == nil {
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							walker(t.Left)
 | 
				
			||||||
 | 
							ch <- t.Value
 | 
				
			||||||
 | 
							walker(t.Right)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						walker(t)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Same(t1, t2 *tree.Tree) bool {
 | 
				
			||||||
 | 
						ch1 := make(chan int)
 | 
				
			||||||
 | 
						ch2 := make(chan int)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						go Walk(t1, ch1)
 | 
				
			||||||
 | 
						go Walk(t2, ch2)
 | 
				
			||||||
 | 
						for i := range ch1 {
 | 
				
			||||||
 | 
							v := <- ch2
 | 
				
			||||||
 | 
							if i != v {
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						ch := make(chan int)
 | 
				
			||||||
 | 
						fmt.Println("START")
 | 
				
			||||||
 | 
						// Create two trees
 | 
				
			||||||
 | 
						t1 := tree.New(2)
 | 
				
			||||||
 | 
						t2 := tree.New(2)
 | 
				
			||||||
 | 
						t3 := tree.New(3)
 | 
				
			||||||
 | 
						go Walk(t1, ch)
 | 
				
			||||||
 | 
						for i := range ch {
 | 
				
			||||||
 | 
							fmt.Println(i)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						same_1 := Same(t1, t2)
 | 
				
			||||||
 | 
						same_2 := Same(t2, t3)
 | 
				
			||||||
 | 
						fmt.Println(same_1, same_2)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								tour_of_go/l7/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tour_of_go/l7/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					module exercise-binary-tree.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.24.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require golang.org/x/tour v0.1.0
 | 
				
			||||||
							
								
								
									
										2
									
								
								tour_of_go/l7/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tour_of_go/l7/go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					golang.org/x/tour v0.1.0 h1:OWzbINRoGf1wwBhKdFDpYwM88NM0d1SL/Nj6PagS6YE=
 | 
				
			||||||
 | 
					golang.org/x/tour v0.1.0/go.mod h1:DUZC6G8mR1AXgXy73r8qt/G5RsefKIlSj6jBMc8b9Wc=
 | 
				
			||||||
							
								
								
									
										18
									
								
								tour_of_go/l7/goroutines.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tour_of_go/l7/goroutines.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func say(s string) {
 | 
				
			||||||
 | 
						for i := 0; i < 5; i++ {
 | 
				
			||||||
 | 
							time.Sleep(100 * time.Millisecond)
 | 
				
			||||||
 | 
							fmt.Println(s)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						go say("hello")
 | 
				
			||||||
 | 
						say("world")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										33
									
								
								tour_of_go/l7/mutex-couter.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tour_of_go/l7/mutex-couter.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SafeCounter struct {
 | 
				
			||||||
 | 
						mu	sync.Mutex
 | 
				
			||||||
 | 
						v	map[string]int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *SafeCounter) Inc(key string) {
 | 
				
			||||||
 | 
						c.mu.Lock()
 | 
				
			||||||
 | 
						c.v[key]++
 | 
				
			||||||
 | 
						c.mu.Unlock()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *SafeCounter) Value(key string) int {
 | 
				
			||||||
 | 
						c.mu.Lock()
 | 
				
			||||||
 | 
						defer c.mu.Unlock()
 | 
				
			||||||
 | 
						return c.v[key]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						c := SafeCounter{v: make(map[string]int)}
 | 
				
			||||||
 | 
						for i := 0; i < 1000; i++ {
 | 
				
			||||||
 | 
							go c.Inc("somekey")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						time.Sleep(time.Second)
 | 
				
			||||||
 | 
						fmt.Println(c.Value("somekey"))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										23
									
								
								tour_of_go/l7/range-and-close.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tour_of_go/l7/range-and-close.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func fibonacci(n int, c chan int) {
 | 
				
			||||||
 | 
						x, y := 0, 1
 | 
				
			||||||
 | 
						for i := 0; i < n; i++ {
 | 
				
			||||||
 | 
							c <- x
 | 
				
			||||||
 | 
							x, y = y, x+y
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						close(c)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						c := make(chan int, 10)
 | 
				
			||||||
 | 
						fmt.Printf("The channel's capacity is %d", cap(c))
 | 
				
			||||||
 | 
						go fibonacci(cap(c), c)
 | 
				
			||||||
 | 
						for i := range c {
 | 
				
			||||||
 | 
							fmt.Println(i)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								tour_of_go/l7/select.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tour_of_go/l7/select.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func fibonacci(c, quit chan int) {
 | 
				
			||||||
 | 
						x, y := 0, 1
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							select {
 | 
				
			||||||
 | 
							case c <- x:
 | 
				
			||||||
 | 
								x,y = y, x+y
 | 
				
			||||||
 | 
							case <- quit:
 | 
				
			||||||
 | 
								fmt.Println("quit")
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						c := make(chan int)
 | 
				
			||||||
 | 
						quit := make(chan int)
 | 
				
			||||||
 | 
						go func() {
 | 
				
			||||||
 | 
							for i := 0; i < 10; i++ {
 | 
				
			||||||
 | 
								fmt.Println(<-c)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							quit <- 0
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						fibonacci(c, quit)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user