Operators and operators in Gox language are relatively simple,
// Assignment
a = nil
println(a)
a = true
println(a)
println("-----")
// basic operators
a = 2 + 1
println(a)
a = 2 - 1
println(a)
a = 2 * 1
println(a)
a = 4 / 2
println(a)
println("-----")
// ++ and --
a = 1
a++
println(a)
a--
println(a)
println("-----")
// +=, -=, *=, /=
a = 1
a += 1
println(a)
a -= 1
println(a)
a *= 4
println(a)
a /= 2
println(a)
a = 2 - (-2)
println(a)
println("-----")
// bitwise and/or/not
a = 1 & 3
println(a)
a = 1 | 2
println(a)
a = !true
println(a)
println("-----")
// bitwise shift
a = 2 << 3
println(a)
a = 8 >> 2
println(a)
println("-----")
// mod
a = 7 % 3
println(a)
println("-----")
// bitwise complement
a = bitXor(1.1, 2)
println(a)
The output is:
λ gox operators.gox
<nil>
true
-----
3
1
2
2
-----
2
1
-----
2
1
4
2
4
-----
1
3
false
-----
16
2
-----
1
-----
0
Note that because the Qlang engine in the Gox language occupies "^" as the address symbol, the bitwise XOR operation can only be implemented with the bitXor function.
In addition, the member variable of the structure generally obtains its value with the "." operator. If you want to obtain its pointer, you need to use the "@" operator.
* Note: Since version 0.988, in order to reduce unnecessary file size, Gox has abandoned other script engines and only supports Qlang engine, so the content in this article is no longer valid and is only reserved for reference to the old version.
The following is the version using Anko engine.
// Assignment
a = nil
println(a)
a = true
println(a)
println("-----")
// basic operators
a = 2 + 1
println(a)
a = 2 - 1
println(a)
a = 2 * 1
println(a)
a = 4 / 2
println(a)
println("-----")
// ++ and --
a = 1
a++
println(a)
a--
println(a)
println("-----")
// +=, -=, *=, /=
a = 1
a += 1
println(a)
a -= 1
println(a)
a *= 4
println(a)
a /= 2
println(a)
a = 2 - (-2)
println(a)
println("-----")
// bitwise and/or/not
a = 1 & 3
println(a)
a = 1 | 2
println(a)
a = !true
println(a)
println("-----")
// bitwise shift
a = 2 << 3
println(a)
a = 8 >> 2
println(a)
println("-----")
// mod
a = 7 % 3
println(a)
println("-----")
// bitwise complement
a = ^1.1
println(a)
// string manipulation
a = "a" * 4
println(a)
The output is:
<nil>
true
-----
3
1
2
2
-----
2
1
-----
2
1
4
2
4
-----
1
3
false
-----
16
2
-----
1
-----
-2
aaaa
The last operator is bitwise complement bitwise inversion, according to the official interpretation of the Go language:
^x bitwise complement is m ^ x with m = "all bits set to 1" for unsigned x
and m = -1 for signed x