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

时间:2022-05-05
本文章向大家介绍神奇的go语言(高级应用),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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访问
[cpp] view plain copy
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)  
        }  
 
}