{ // 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" } }