Go 语言编程实例(七)

作者: 爪爪熊 | 来源:发表于2017-08-19 14:36 被阅读93次

    本节主要分享:字符串数字解析、URL解析、SHA1HASH、BASE64

    以下代码在存放于github中如下仓库:github

    Go 字符串数字解析

    从字符串中解析出数字,许多场景都需要这么做。Golang 内置的 strconv 包中提供了相关的函数可供使用。

    package main
    
    import (
        "strconv"
        "fmt"
    )
    
    func main(){
    
        //后面的64是 64bits 的意思
        f,_ := strconv.ParseFloat("1.456",64)
        fmt.Printf("%T %f\n",f,f)
    
        //0 表示使用进制解析,修改为8或者16就按照8进制,16进制解析
        // 64表示结果必须符合 64bit(只能在INT64范围内)
        i,_ := strconv.ParseInt("123",0,64)
        fmt.Printf("%T %d\n",i,i)
    
        //ParseInt 可以识别十六进制的数字
        d,_:=strconv.ParseInt("0x1c8",0,64)
        fmt.Printf("%T %d\n",d,d)
    
        u,_:=strconv.ParseUint("789",0,64)
        fmt.Printf("%T %d\n",u,u)
    
        //atoi 基本的十进制解析
        k,_:=strconv.Atoi("135")
        fmt.Printf("%T %d\n",k,k)
        //错误
        _,e:= strconv.Atoi("test")
        fmt.Println(e)
    }
    
    

    Go URL解析实例

    URL提供了一种统一的方法来定位资源。以下是在Go中解析网址的方法,解析示例URL,包括方案,身份验证信息,主机,端口,路径,查询参数和查询片段。

    package main
    
    import (
        "net/url"
        "fmt"
        "net"
    )
    
    func main(){
        //示例网址
        s := "postgres://user:pass@host.com:1314/path?k=v#f"
    
        //解析网址,确保无错
        u,err := url.Parse(s)
        if err != nil{
            panic(err)
        }
    
        //访问 scheme
        fmt.Println(u.Scheme)
    
        //User 包含了所有验证信息 用户名和密码都可以单独来。
        fmt.Println(u.User)
        fmt.Println(u.User.Username())
        p,_:=u.User.Password()
        fmt.Println(p)
    
        //Host 包含了 hostname 和 port 可以使用 SplitHostPort解析他们
        fmt.Println(u.Host)
        host ,port ,_:=net.SplitHostPort(u.Host)
        fmt.Println(host)
        fmt.Println(port)
    
        //提取路径和片段
        fmt.Println(u.Path)
        fmt.Println(u.Fragment)
    
        //要使用K=V格式的字符串获取查询参数,需要使用RawQuery。也可以解析到map中。
        //解析查询参数映射是从字符串到字符串的片段。因此索引为0
        fmt.Println(u.RawQuery)
        m,_:= url.ParseQuery(u.RawQuery)
        fmt.Println(m)
        fmt.Println(m["k"][0])
    
    }
    
    

    Go SHA1hash实例

    SHA1散列经常用于计算二进制或文本块的短标识。例如,git版本控制系统广泛使用 SHA1s 来标识版本化的文件和目录。以下示例Go计算SHA1HASH。

    package main
    
    import (
        "crypto/sha1"
        "fmt"
    )
    
    func main(){
        s := "only test you"
    
        //new hash
    
        h := sha1.New()
    
        h.Write([]byte(s))
    
        //计算最终散列值,后面nil可以附件到现有的字节片段
        bs := h.Sum(nil)
    
        fmt.Println(s)
        fmt.Printf("%x\n",bs)
    }
    
    

    Go Base64编码实例

    Go 提供对 base64 编码解码的内置支持。导入带有 b64 名称的 encoding/base64 软件包,而不是默认的 base64 。它会节省我们一些空间。Go支持标准和URL兼容的 base64,以下是使用标准编码器进行编码的方法。

    package main
    
    import (
        "encoding/base64"
        "fmt"
    )
    
    func main(){
        data := "abc123!?$*&()'-=@~"
    
        sEnc := base64.StdEncoding.EncodeToString([]byte(data))
        fmt.Println(sEnc)
    
        sDec,_:=base64.StdEncoding.DecodeString(sEnc)
        fmt.Println(string(sDec))
    
        uEnc := base64.URLEncoding.EncodeToString([]byte(data))
        fmt.Println(uEnc)
    
        uDec,_:= base64.URLEncoding.DecodeString(uEnc)
        fmt.Println(string(uDec))
    }
    
    

    如需进一步讨论可以加群:295023494(嵌入式)

    相关文章

      网友评论

      本文标题:Go 语言编程实例(七)

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