{
    "aliases": [
        "golang"
    ],
    "keywords": {
        "keyword": "break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",
        "literal": "true false iota nil",
        "built_in": "append cap close complex copy imag len make new panic print println real recover delete"
    },
    "illegal": "<\/",
    "contains": [
        {
            "className": "comment",
            "begin": "\/\/",
            "end": "$",
            "contains": [
                {
                    "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
                },
                {
                    "className": "doctag",
                    "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                    "relevance": 0
                }
            ]
        },
        {
            "className": "comment",
            "begin": "\/\\*",
            "end": "\\*\/",
            "contains": [
                {
                    "$ref": "#contains.0.contains.0"
                },
                {
                    "className": "doctag",
                    "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                    "relevance": 0
                }
            ]
        },
        {
            "className": "string",
            "variants": [
                {
                    "className": "string",
                    "begin": "\"",
                    "end": "\"",
                    "illegal": "\\n",
                    "contains": [
                        {
                            "begin": "\\\\[\\s\\S]",
                            "relevance": 0
                        }
                    ]
                },
                {
                    "className": "string",
                    "begin": "'",
                    "end": "'",
                    "illegal": "\\n",
                    "contains": [
                        {
                            "$ref": "#contains.2.variants.0.contains.0"
                        }
                    ]
                },
                {
                    "begin": "`",
                    "end": "`"
                }
            ]
        },
        {
            "className": "number",
            "variants": [
                {
                    "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)[i]",
                    "relevance": 1
                },
                {
                    "className": "number",
                    "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
                    "relevance": 0
                }
            ]
        },
        {
            "begin": ":="
        },
        {
            "className": "function",
            "beginKeywords": "func",
            "end": "\\s*(\\{|$)",
            "excludeEnd": true,
            "contains": [
                {
                    "className": "title",
                    "begin": "[a-zA-Z]\\w*",
                    "relevance": 0
                },
                {
                    "className": "params",
                    "begin": "\\(",
                    "end": "\\)",
                    "keywords": {
                        "$ref": "#keywords"
                    },
                    "illegal": "[\"']"
                }
            ]
        }
    ]
}
