七叶笔记 » golang编程 » Go 1.16 新增文本嵌入功能

Go 1.16 新增文本嵌入功能

如果在go 1.16 版本之前,我们如果定义一个很长的字符串,通常会这样定义。

 const (
  TemplateStr = `
  bala bala bala
  为啥我要写这段话呢?
  第一,是为了模拟构造一个一个很长的字符串
  第二,也行你也看出来了,因为没有办法,为了凑字数
  因为规定文章必须满足300字才能发
`
)  

上面的代码是不是很长得很丑陋,在代码里面定义一个很冗长的字符串,那么在1.16 版本以后就简单了。直接通过go:embed 嵌入功能就可以直接将文件内容嵌入到TemplateStr这个字符串变量里面

 //go:embed template.txt
var TemplateStr string  

接下来就可以愉快地使用这个变量了。但个人感觉这种方式并不好,主要是因为上面我定义的字符串是一个常量,常量本身就代表不可变。其他开发者可以使用我定义的常量,但不能修改其内容。如果换成这种 var 变量定义,就意味着这个值是可以被覆盖的,这就和原本的语义不一致了。所以这里我个人还有觉得有点不太好的。

相关文章