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

feixiaoxing · · 3701 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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)
        }

}




有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:feixiaoxing

查看原文:神奇的go语言(高级应用)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3701 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传