source go.vim snippet helloworld abbr package main\nimport fmt... options head package main import ( "fmt" ) func main() { fmt.Printf("Hello, world\n") } snippet func abbr func ...() { ... } alias fn options head func ${1:fname}(${2}) ${3:int }{ ${0:TARGET:return } } snippet import alias im options head import ( "${1:fmt}" ) ${0:TARGET} snippet package alias pk options head package ${1:main} ${0:TARGET} snippet printf alias pf options head fmt.Printf("${1}\n"${2:}) snippet println alias pl options head fmt.Println(${0:TARGET}) snippet struct alias ts options head type ${1} struct { ${0:TARGET} } snippet interface alias ti options head type ${1} interface { ${0:TARGET} } snippet for options head for ${1} { ${0:TARGET} } snippet range abbr for range options head for ${1:v} := range ${2:#:iterator} { ${0:TARGET} } snippet if options head if ${1:#:condition} { ${0:TARGET} } snippet iferr alias ife options head if err != nil { return `g:NeosnippetSnippets_Goiferr()` } ${2} snippet switch abbr switch {} options head switch ${1:#:v} { case ${2:#:condition}: ${0:TARGET} } snippet select abbr select {} options head select { case ${1:#:condition}: ${0:TARGET} } snippet case options head case ${1:#:condition}: ${2:TARGET} snippet funcTest abbr func Test... (t *testing.T) { ... } options head func Test${1} (${2:t *testing.T}) { for i := 0; i < ${3:t.N}; i++ { ${4} } } snippet funcbench abbr func Benchmark... (b *testing.B) { ... } options head func Benchmark${1} (${2:b *testing.B}) { for i := 0; i < ${3:b.N}; i++ { ${4} } } snippet testtable abbr var test = {...}{...} for {t.Run(){...}} options head var tests = []struct { name string expected string given string }{ {"${2}", "${3}", "${4}",}, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T){ actual := ${1:Function}(tt.given) if actual != tt.expected { t.Errorf("given(%s): expected %s, actual %s", tt.given, tt.expected, actual) } }) }