为了账号安全,请及时绑定邮箱和手机立即绑定

如何访问 Go 模板中的子字符串 (s[:2])?

如何访问 Go 模板中的子字符串 (s[:2])?

Go
FFIVE 2022-10-24 16:30:45
类似于Go 模板:如何访问模板中的数组项 (arr[2])?如何在 Go 模板中直接访问子字符串(例如 s[:2])?每当我这样做时,我都会得到“坏字符 U+005B '['”{{ .s[:2] }}
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

你也可以slice在 s 上使用模板函数string(它是在Go 1.13中添加的):

模板功能:

slice

  slice returns the result of slicing its first argument by the

  remaining arguments. Thus "slice x 1 2" is, in Go syntax, x[1:2],

  while "slice x" is x[:], "slice x 1" is x[1:], and "slice x 1 2 3"

  is x[1:2:3]. The first argument must be a string, slice, or array.

例如:


t := template.Must(template.New("").Parse(`{{ slice . 0 2 }}`))

if err := t.Execute(os.Stdout, "abcdef"); err != nil {

    panic(err)

}

这将输出(在Go Playground上尝试):


ab

不要忘记 Go 字符串存储的是 UTF-8 编码的字节序列,而索引和切片字符串使用字节索引(而不是rune索引)。当字符串包含多字节符文时,这很重要,如下例所示:


t := template.Must(template.New("").Parse(`{{ slice . 0 3 }}`))

if err := t.Execute(os.Stdout, "世界"); err != nil {

    panic(err)

}

这将输出一个(在Go Playgroundrune上尝试):



查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号