{
	// Place your gochan workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope 
	// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
	// used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
	// Placeholders with the same ids are connected.
	// Example:
	// "Print to console": {
	// 	"scope": "javascript,typescript",
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }

	"Scan sql rows" : {
		"scope": "go",
		"prefix": ["queryscan", "scan-rows"],
		"body": [
			"rows, err := QuerySQL(${1:'sql'})",
			"if err != nil {",
				"\treturn nil, err",
			"}",
			"var ${2:itemname}s []${3:elementType}",
			"for rows.Next() {",
				"\tvar ${2:itemname} ${3:elementType}",
				"\terr = rows.Scan($0)",
				"\tif err != nil {",
					"\t\treturn nil, err",
				"\t}",
				"\t${2:itemname}s = append(${2:itemname}s, ${2:itemname})",
			"}",
			"return ${2:itemname}s, nil"],
		"description": "A function template that queries and scans the rows into a slice"
	}
}