Выражения
(b*c).func3(d).func2(a).func1(10)
"my string".Upper().TrimRight("g")
// эквивалентно
func1(func2(func3( b*c, d ), a), 10)
TrimRight(Upper("my string"), "g")Operand = Literal | OperandName | "(" Expression ")" | GoStmt
Literal = BasicLiteral
constLit = "true" | "false"
BasicLiteral = float | integer | stringLit | constLit | charLit
OperandName = identifier | EnvVariable | FnIdent
PrimaryExpr = Operand | FuncName Arguments | Expression "." FuncName Arguments | IfOp |
IndexExp | FieldExpr
OptionalArgs = identifier ":" Expression { "," identifier ":" Expression }
Arguments = "(" [ ExpressionList ] [ OptionalArgs ] ")"
ExpressionList = Expression { "," Expression }
Expression = UnaryExpr | Expression binaryOp Expression |
OperandName assignOp Expression
UnaryExpr = PrimaryExpr | unaryOp UnaryExpr | incOp OperandName | OperandName incOp |
UnaryExpr postunaryOp
binaryOp = "||" | "&&" | relOp | mathOp | assignOp | rangeOp
relOp = "==" | "!=" | "<" | "<=" | ">" | ">="
mathOp = "+" | "-" | "|" | "^" | "*" | "/" | "%" | "<<" | ">>" | "&" |
unaryOp = "-" | "!" | "^" | "*" | "#" | "##"
postunaryOp = "?"
incOp = "++" | "--"
rangeOp = ".."
assignOp = "=" | "+=" | "-=" | "|=" | "^=" | "*=" | "/=" | "%=" | "<<=" |
">>=" | "&=" | "#="
IfOp = "?" "(" Expression "," Expression "," Expression ")"Приоритеты операторов
Условный оператор "?"
Инициализация массивов и структур
Индексное выражение
Выражения присваивания
Контекст
Last updated
Was this helpful?