返回

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

发布时间:2023-09-22 06:15:35 269

 

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

 

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

}

 

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
多线程的那点儿事(基础篇) 2023-09-22 03:06:25