golang1.16新特性记录

废弃ioutil

  • Golang1.16已经标记io/ioutil为废弃,其函数被转移到了os和io这两个包里

embed

import (
    "embed"
    ...
)
//go:embed Web/dist/spa
var staticFs embed.FS
...
func main() {
    ...
    fads, _ := fs.Sub(staticFs, "Web/dist/spa")
    app.HandleDir("/", http.FS(fads))
    ...


// 说明
//go:embed images
这是匹配所有位于/tmp/proj/images及其子目录中的文件

//go:embed images/jpg/a.jpg
匹配/tmp/proj/images/jpg/a.jpg这一个文件

//go:embed a.txt
匹配/tmp/proj/a.txt

//go:embed images/jpg/*.jpg
匹配/tmp/proj/images/jpg下所有.jpg文件

//go:embed images/jpg/a?.jpg
匹配/tmp/proj/images/jpg下的a1.jpg a2.jpg ab.jpg等

//go:embed images/??g/*.*
匹配/tmp/proj/images下的jpg和png文件夹里的所有有后缀名的文件,例如png/123.png jpg/a.jpeg

//go:embed *
直接匹配整个/tmp/proj

//go:embed a.txt
//go:embed *.png *.jpg
//go:embed aa.jpg
可以指定多个//go:embed指令行,之间不能有空行,也可以用空格在一行里写上对个模式匹配,表示匹配所有这些文件,相当于并集操作
可以包含重复的文件或是模式串,golang对于相同的文件只会嵌入一次,很智能

io/fs (大更新)

Go’s and interfaces, along with and its analogs, go a long way in abstracting common operations on opened files. However, until now there hasn’t been a great story for abstracting an entire filesystem.io.Readerio.Writeros.File
Why might you want to do this? Well, the most common motivating use-case I’ve encountered is being able to mock a filesystem in a test.

io/fs是模仿Linux的vfs做一套基于fs的io接口,embed也是依赖于他哟~

数据类型

fs包中主要包含了下面几种数据类型(都是接口类型)

名称 作用
FS 文件系统的抽象,有一个Open方法用来从FS打开获取文件数据
DirEntry 描述目录项目(包含目录自身)的数据结构
File 描述文件数据的结构,包含Stat,Read,Close方法
ReadDirFile 在File的基础上支持ReadDir,可以代表目录自身
FileMode 描述文件类型,比如是通常文件还是套接字或者是管道
FileInfo 文件的元数据,例如创建时间等

其他

  • 相对路径导入不在被允许
  • 支持darwin/arm64平台
高性能,高性价比服务器推荐 ( DogYun ) 😉
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇