神奇的go语言(高级应用)

purpleswan 发布于1年前 阅读12349次
0 条评论


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】


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

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)
        }

}



需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。