[+]文章目录

高级应用

其实有了上一篇的基本语法,我们就可以做一些简单的事情,比如说文件服务器。或许大家有点不相信,没关系。下面开始用代码来说明问题,其实整个代码的内容不会超过十行。

package main  

import "net/http"  

func main() {  

        h := http.FileServer(http.Dir("/home"))  
        http.ListenAndServe(":8888", h)  

}  

有了上面的代码,直接输入 go run share.go。说了这么多,大家可以继续看 go 语言下的高级应用是怎么使用的。

(1)并发运行

package main  

import "fmt"  
import "time"  

func show() {  

        for {  
                fmt.Print("child ");  
                time.Sleep(10000)  
        }  
}  

func main() {  

        go show()  

        for {  
                fmt.Print("parent ")  
                time.Sleep(10000)  
        }  
}  

(2)channel 通信

package main  

import "fmt"  

func show(c chan int) {  

        for {  

                data := <- c  

                if 1 == data {  

                        fmt.Print("receive ")  
                }  

        }  
}  

func main() {  

        c := make(chan int)  

        go show(c)  

        for {  

                c <- 1  
                fmt.Print("send ")  
        }  
}  

(3) 多 channel 访问

package main  

import "fmt"  
import "time"  

func fibonacci(c, quit chan int) {  

        x, y := 1, 1  

        for {  
                select {  

                        case c <- x:  
                                x, y = y, x+y  

                        case <- quit:  
                                fmt.Println("quit")  
                                return  

                }  
        }  
}  

func show(c, quit chan int) {  

        for i := 0; i < 10; i ++ {  

                fmt.Println(<- c)  
        }  

        quit <- 0  

}  

func main() {  

        data := make(chan int)  
        leave := make(chan int)  

        go show(data, leave)  
        go fibonacci(data, leave)  

        for {  

                time.Sleep(100)  
        }  

}  

« 前一篇