Operatorzy stanowią podstawę każdego języka programowania. Zatem funkcjonalność języka Golang bez użycia operatorów jest niekompletna. Operatorzy pozwalają nam wykonywać różne typy operacji na operandach. W języku Go operatory można klasyfikować na podstawie ich różnych funkcji .

Operatory arytmetyczne
Operatorzy ci służą do wykonywania operacji na operandach w języku Go:
- Dodawanie: „+” dodaje dwa operandy. Na przykład: x+y.
- Odejmowanie: '-' odejmuje dwa operandy. Przykład: xy.
- Mnożenie: '*' mnoży dwa operandy. Na przykład: x*y.
- Dzielenie: '/' dzieli pierwszy operand przez drugi operand. Na przykład: x/y.
- Reszta: Operator „%” zwraca resztę z dzielenia pierwszego operandu przez drugi operand. Na przykład: x%y.
Uwaga: -, +, !, &, *, <- i ^ są również nazywane operatorami jednoargumentowymi, a ich priorytet jest wyższy. Operatory ++ i — pochodzą z instrukcji, nie są wyrażeniami, więc znajdują się poza hierarchią operatorów.
Na przykład:
//Minh họa chương trình Go dùng toán tử số học
package main
import "fmt"
func main() {
p:= 34
q:= 20
// Phép cộng
result1:= p + q
fmt.Printf("Result of p + q = %d", result1)
// Phép trừ
result2:= p - q
fmt.Printf("\nResult of p - q = %d", result2)
// Phép nhân
result3:= p * q
fmt.Printf("\nResult of p * q = %d", result3)
// Division
result4:= p / q
fmt.Printf("\nResult of p / q = %d", result4)
// Modulus
result5:= p % q
fmt.Printf("\nResult of p %% q = %d", result5)
}
Wynik:
Kết quả của p + q = 54
Kết quả của p - q = 14
Kết quả của p * q = 680
Kết quả của p / q = 1
Kết quả của p % q = 14
Operatorzy relacyjni
Operatory relacyjne służą do porównywania dwóch wartości. Przyjrzyjmy się każdemu operatorowi z osobna:
- Operator '=='(Equals) sprawdza, czy dwa podane operandy są równe, czy nie. Jeśli równe, zwraca wartość true. W przeciwnym wypadku zwraca fałsz. Na przykład 5==5 zwróci wartość true.
- Operator '!='(Nierówne) sprawdza, czy dwa podane operandy są równe, czy nie. W przeciwnym wypadku zwraca wartość true. W przeciwnym wypadku zwraca fałsz. Jest to dokładne uzupełnienie boolowskie operatora '=='. Na przykład 5!=5 zwróci fałsz.
- Operator '>' (większy niż) sprawdza, czy pierwszy operand jest większy od drugiego operandu. Jeśli wartość jest większa, zwraca wartość true. Jeśli mniej, zwraca fałsz. Na przykład 6>5 zwróci wartość true.
- Operator '<' (mniejszy niż) sprawdza, czy pierwszy operand jest mniejszy od drugiego operandu. Jeśli jest mniejsza, zwraca wartość true. W przeciwnym razie zwraca fałsz. Na przykład <5 zwróci
- Operator '>=' (większe niż równe) sprawdza, czy pierwszy operand jest większy lub równy drugiemu operandowi. Jeśli wartość jest większa lub równa, zwraca wartość true. Jeśli wartość jest mniejsza lub równa, zwraca fałsz. Na przykład: 5>=5 zwróci wartość true.
- Operator '<=' (mniejszy lub równy) sprawdza, czy pierwszy operand jest mniejszy lub równy drugiemu operandowi. Jeśli wartość jest większa lub równa, zwraca wartość true. Jeśli jest mniejszy lub równy, zwraca fałsz. Na przykład: <=5 również zwróci
Na przykład:
// Minh họa chương trình Go dùng toán tử quan hệ
package main
import "fmt"
func main() {
p:= 34
q:= 20
// ‘=='(Equal To)
result1:= p == q
fmt.Println(result1)
// ‘!='(Not Equal To)
result2:= p != q
fmt.Println(result2)
// ‘<‘(less than)="" result3:="p">< q="" fmt.println(result3)="" ‘="">'(Greater Than)
result4:= p > q
fmt.Println(result4)
// ‘>='(Greater Than Equal To)
result5:= p >= q
fmt.Println(result5)
// ‘<='(less than="" equal="" to)="" result6:="p"><= q="" fmt.println(result6)="" }="">
Wynik:
false
true
false
true
true
false
Operatorzy logiczni
Stosuje się je do łączenia dwóch lub więcej warunków/ograniczeń lub do uzupełniania oceny rozważanego warunku początkowego.
- AND: Operator „&&” zwraca wartość true, gdy spełnione są obydwa rozpatrywane warunki. W przeciwnym wypadku zwraca fałsz. Na przykład a && b zwraca wartość true, gdy zarówno a, jak i b są prawdziwe (czyli różne od zera).
- LUB: Operator '||' Zwraca wartość true, gdy spełniony jest jeden (lub obydwa) z rozpatrywanych warunków. W przeciwnym wypadku zwraca fałsz. Na przykład: || b zwraca wartość true, jeśli a lub b jest prawdą (czyli wartością różną od zera). Oczywiście zwraca wartość true, gdy zarówno a, jak i b są prawdą.
- Logiczne NIE: '!' operator Zwraca wartość true, jeżeli rozpatrywany warunek nie jest spełniony. W przeciwnym wypadku zwraca fałsz. Na przykład: !a zwraca wartość true, jeśli a jest fałszywe, tj. gdy a = 0.
Na przykład:
// Minh họa chương trình Go dùng toán tử logic
package main
import "fmt"
func main() {
var p int = 23
var q int = 60
if(p!=q && p<=q){ fmt.println("true")="" }="" if(p!="q" ||=""><=q){ fmt.println("true")="" }="" if(!(p="=q)){" fmt.println("true")="" }="" }="">
Wynik:
True
True
True
Operatorzy bitowi
W języku Go istnieje 6 operatorów bitowych, które działają na poziomie bitów lub służą do wykonywania operacji bitowych. Poniżej przedstawiono operatory bitowe:
- & (bitowe AND): Przyjmuje dwie liczby jako operandy i wykonuje AND na każdym bicie tych dwóch liczb. Wynikiem AND jest 1 tylko wtedy, gdy oba bity mają wartość 1.
- | (bitowe OR): Przyjmuje dwie liczby jako operandy i wykonuje operację OR na każdym bicie tych dwóch liczb. Wynikiem OR jest 1, jeżeli którykolwiek z dwóch bitów ma wartość 1.
- ^ (bitowa operacja XOR): Przyjmuje dwie liczby jako operandy i wykonuje operację XOR na każdym bicie tych dwóch liczb. Wynikiem operacji XOR jest 1, jeśli dwa bity są różne.
- < (przesunięcie w lewo): pobiera dwie liczby, przesuwa bity pierwszego operandu w lewo, drugi operand określa liczbę pozycji do przesunięcia
- >> (przesunięcie w prawo): Weź dwie liczby, przesuń bity pierwszego operandu w prawo, drugi operand określi liczbę pozycji do przesunięcia.
- &^ (I NIE): Jest to jawny operator bitowy.
Na przykład:
// Minh họa chương trình Go dùng toán tử bitwise
package main
import "fmt"
func main() {
p:= 34
q:= 20
// & (bitwise AND)
result1:= p & q
fmt.Printf("Result of p & q = %d", result1)
// | (bitwise OR)
result2:= p | q
fmt.Printf("\nResult of p | q = %d", result2)
// ^ (bitwise XOR)
result3:= p ^ q
fmt.Printf("\nResult of p ^ q = %d", result3)
// < (left="" shift)="" result4:="p">< 1="" fmt.printf("\nresult="" of="" p="">< 1="%d" ,"="" result4)="">> (right shift)
result5:= p >> 1
fmt.Printf("\nResult of p >> 1 = %d", result5)
// &^ (AND NOT)
result6:= p &^ q
fmt.Printf("\nResult of p &^ q = %d", result6)
}
Wynik:
Kết quả của p & q = 0
Kết quả của p | q = 54
Kết quả của p ^ q = 54
Kết quả của p < 1="68" kết="" quả="" của="" p="">> 1 = 17
Kết quả của p &^ q = 34
Operator zadania
Operator przypisania służy do przypisania wartości zmiennej. Lewy operand operatora przypisania jest zmienną, a prawy operand operatora przypisania jest wartością. Wartość po prawej stronie musi mieć taki sam typ danych jak zmienna po lewej stronie, w przeciwnym razie kompilator zwróci błąd. Poniżej przedstawiono różne typy operatorów przypisania:
- „="(Proste przypisanie): To najprostszy operator przypisania. Za pomocą tego operatora można przypisać wartość po prawej stronie zmiennej po lewej stronie.
- „+=”(Dodatkowe przypisanie): Ten operator jest kombinacją operatorów „+” i „=”. Ten operator najpierw dodaje bieżącą wartość zmiennej lewej do wartości zmiennej prawej, a następnie przypisuje wynik do zmiennej lewej.
- „-=”(Przypisanie minusa): Ten operator jest kombinacją operatorów „-” i „=”. Ten operator najpierw odejmuje bieżącą wartość zmiennej lewej od wartości zmiennej prawej, a następnie przypisuje wynik do zmiennej lewej.
- „*=”(Przypisanie mnożenia): Ten operator jest kombinacją operatorów „*” i „=”. Ten operator najpierw mnoży bieżącą wartość zmiennej lewej przez wartość po prawej, a następnie przypisuje wynik do zmiennej lewej.
- „/=”(Przypisanie dzielenia): Ten operator jest kombinacją operatorów „/” i „=”. Ten operator najpierw dzieli bieżącą wartość zmiennej lewej przez wartość po prawej, a następnie przypisuje wynik do zmiennej lewej.
- „%="(Przypisanie reszty): Ten operator jest kombinacją operatorów „%" i „=". Ten operator najpierw pobiera resztę bieżącej wartości lewej zmiennej, mając podaną wartość po prawej stronie, a następnie przypisuje wynik do lewej zmiennej.
- „&=”(I bitowe): Ten operator jest kombinacją operatorów „&” i „=”. Ten operator najpierw wykonuje operację „AND bitowy” między bieżącą wartością zmiennej lewej a wartością po prawej, a następnie przypisuje wynik do zmiennej lewej.
- „^=”(bitowe LUB wyłączne): Ten operator jest kombinacją operatorów „^” i „=”. Operator ten najpierw wykonuje operację „bitowego LUB wyłącznego” na bieżącej wartości lewej zmiennej przez wartość prawej, a następnie przypisuje wynik do lewej zmiennej.
- “|=”(LUB bitowy włączony): Ten operator jest kombinacją operatora „|” operatorów i '='. Operator ten najpierw wykonuje „bitową operację LUB” (OR) na bieżącej wartości zmiennej lewej przez wartość zmiennej prawej, a następnie przypisuje wynik do zmiennej lewej.
- „<=: Ten operator jest kombinacją operatorów < ' i '="'”. Ten operator najpierw „przesuwa” bieżącą wartość zmiennej po lewej stronie o wartość po prawej stronie, a następnie przypisuje wynik do zmiennej po prawej stronie.
- „>>=”: Ten operator jest kombinacją operatorów „>>” i „=”. Ten operator najpierw wykonuje operację „Przesunięcie w prawo AND” na bieżącej wartości lewej zmiennej i wartości po prawej stronie, a następnie przypisuje wynik do lewej zmiennej.
Na przykład:
// Minh họa chương trình Go dùng toán tử gán
package main
import "fmt"
func main() {
var p int = 45
var q int = 50
// “=”(Simple Assignment)
p = q
fmt.Println(p)
// “+=”(Add Assignment)
p += q
fmt.Println(p)
//“-=”(Subtract Assignment)
p-=q
fmt.Println(p)
// “*=”(Multiply Assignment)
p*= q
fmt.Println(p)
// “/=”(Division Assignment)
p /= q
fmt.Println(p)
// “%=”(Modulus Assignment)
p %= q
fmt.Println(p)
}
Wynik:
50
100
50
2500
50
0
Inni operatorzy
- &: Ten operator zwraca adres zmiennej.
- *: Ten operator udostępnia wskaźnik do zmiennej.
- <-: Nazwa tego operatora to receive. Służy do odbierania wartości z
// Minh họa chương trình sử dụng toán tử khác
package main
import "fmt"
func main() {
a := 4
// Dùng địa chỉ của toán tử (&) toán tử trỏ gián tiếp (*)
b := &a
fmt.Println(*b)
*b = 7
fmt.Println(a)
}
Wynik:
4
7