• golang1.16内嵌静态资源指南-go:embed 新特性


    参考链接:https://www.cnblogs.com/apocelipes/p/13907858.html

    对于一个完整的嵌入资源,代码中的声明是这样的:

    //go:embed images
    var imgs embed.FS
    
    //go:embed a.txt
    var txt []byte
    
    //go:embed b.txt
    var txt2 string

    一共有三种数据格式可选:

    数据类型说明
    []byte 表示数据存储为二进制格式,如果只使用[]byte和string需要以import (_ "embed")的形式引入embed标准库
    string 表示数据被编码成utf8编码的字符串,因此不要用这个格式嵌入二进制文件比如图片,引入embed的规则同[]byte
    embed.FS 表示存储多个文件和目录的结构,[]byte和string只能存储单个文件

    实际上接受嵌入文件数据的变量也可以是string和[]byte的类型别名或基于他们定义的新类型,例如下面的代码那样:

    type StringAlias = string
    
    //go:embed a.txt
    var text1 StringAlias
    
    type NewBytes []byte
    
    //go:embed b.txt
    var text2 NewBytes

    我们先来看用[]bytestring嵌入单个文件的例子:

    package main
    
    import (
        "fmt"
        _ "embed"
    )
    
    //go:embed macbeth.txt
    var macbeth string
    
    //go:embed texts/en.txt
    var hello string
    
    func main() {
        fmt.Println(len(macbeth)) // 麦克白的总字符数
        fmt.Println(hello) // Output: Hello, world
    }

    再来看看二进制文件的例子,embed_img.go如下所示:

    package main
    
    import (
        "fmt"
        _ "embed"
    )
    
    //go:embed imgs/screenrecord.gif
    var gif []byte
    
    //go:embed imgs/png/a.png
    var png []byte
    
    func main() {
        fmt.Println("gif size:", len(gif)) // gif size: 81100466
        fmt.Println("png size:", len(png)) // png size: 4958264
    }
  • 相关阅读:
    MySQL简概
    IO模型
    协程
    multiprocessing模块
    Python线程的常见的lock
    111-使用post的方式传值(最简示例)
    110-使用正则匹配的方式从url获值
    109-get方式获取url传值
    108-使用表格,不依赖于后台而输入内容
    107-创建第一个动态模板
  • 原文地址:https://www.cnblogs.com/wangjq19920210/p/15338222.html
Copyright © 2020-2023  润新知