美文网首页
Go语言常用代码笔记(持续更新)

Go语言常用代码笔记(持续更新)

作者: Luomeng | 来源:发表于2018-03-13 22:31 被阅读0次

    👇循环读取Channel内容

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        c := make(chan int, 10)
        go fibonacci(cap(c), c)
        for i := range c{
            fmt.Println(i)
        }
    }
    
    func fibonacci(n int, c chan int) {
        x, y := 1, 1
        for i := 0; i < n; i++ {
            c <- x
            x, y = y, x + y
        }
        close(c)
    }
    
    

    👇golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。

    package main
    
    import (
        "fmt"
    )
    
    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 main() {
        c := make(chan int)
        quit := make(chan int)
        go func() {
            for i := 0; i < 10; i++ {
                fmt.Println(<-c)
            }
            quit <- 0
        }()
        fibonacci(c, quit)
    }
    
    

    👇go语言写的第一个服务端程序

    package main
    
    import (
        "fmt"
        "net/http"
        "strings"
        "log"
    )
    
    func sayhelloName(w http.ResponseWriter, r *http.Request) {
        r.ParseForm()
        fmt.Println(r.Form)
        fmt.Println("path", r.URL.Path)
        fmt.Println("scheme", r.URL.Scheme)
        fmt.Println(r.Form["url_long"])
        for k, v := range r.Form {
            fmt.Println("key", k)
            fmt.Println("val", strings.Join(v, ""))
        }
    
        fmt.Fprint(w, "Hello astaxie!")
    }
    
    func main() {
        http.HandleFunc("/", sayhelloName)
        err := http.ListenAndServe(":9090", nil)
        if err != nil {
            log.Fatal("ListenAndServe:", err)
        }
    }
    
    

    👇base64加解密

    package main
    
    import (
        "encoding/base64"
        "fmt"
    )
    
    func base64Encode(src []byte) []byte {
        return []byte(base64.StdEncoding.EncodeToString(src))
    }
    
    func base64Decode(src []byte) ([]byte, error) {
        return base64.StdEncoding.DecodeString(string(src))
    }
    
    func main() {
        hello := "你好,世界!hello world"
        debyte := base64Encode([]byte(hello))
        fmt.Println(debyte)
    
        enbyte, err := base64Decode(debyte)
        if err != nil {
            fmt.Println(err.Error())
        }
    
        if hello != string(enbyte) {
            fmt.Println("hello is not equal to enbyte")
        }
    
        fmt.Println(string(enbyte))
    }
    

    相关文章

      网友评论

          本文标题:Go语言常用代码笔记(持续更新)

          本文链接:https://www.haomeiwen.com/subject/uszwfftx.html