زبان گو هم مثل سایر زبان ها دارای یکسری عملگرها مانند: عملگرهای حسابی, عملگرهای مقایسه ای, عملگرهای منطقی و عملگرهای بیتی می باشد.
1.4.1 عملگرهای حسابی #
زبان گو دارای ۵ تا عملگر حسابی می باشد که به ترتیب :
عملگر | نام |
---|---|
+ | جمع |
- | تفریق |
* | ضرب |
/ | تقسیم |
% | باقی مانده |
این ۵ تا عملگر اغلب به ترتیب مجموع, تفاوت, حاصلضرب و ضریب نیز نامیده می شوند.
1 a := 1
2 b := 2
3
4 c := a + b // 3
5 d := a - b // -1
6 e := a * b // 2
7 f := a / b // 0
8 g := a % b // 1
در کد نمونه بالا ما :=
که متغیر کوتاه است استفاده کردیم که در بhttps://book.gofarsi.ir/chapter-1/go-variables-and-consts/خش 1.5 متغیرها و ثابت ها معرفی خواهیم کرد.
1.4.2 عملگرهای مقایسه ای #
زبان گو دارای ۶ عملگر مقایسه ای می باشد که به ترتیب :
عملگر | نام |
---|---|
== | مساوی بودن |
=! | مساوی نبودن با |
> | کمتر از |
=> | کمتر یا مساوی |
< | بزرگتر |
=< | بزرگتر یا مساوی |
نتیجه این استفاده از این عملگرهای مقایسه فوق یک نوع untyped بولین است یعنی حاصل این مقایسه ها در واقع true یا false است.
1 a := 1
2 b := 2
3 c := 1
4
5 println(a == b) // false
6 println(a == c) // true
7 println(a < b) // true
8 println(b > c) // true
9 println(c <= a) // true
10 println(c >= b) // false
11 println(b != a) // true
12 println(c != a) // false
1.4.3 عملگرهای منطقی #
زبان گو دارای ۳ نوع عملگر منطقی می باشد که به ترتیب :
عملگر | نام |
---|---|
&& | AND |
|| | OR |
! | NOT |
- عملگر && به انگلیسی AND به فارسی و , اگر هردو عملگر true باشد مقدار بازگشتی true و در غیر اینصورت false خواهد بود.
- عملگر || به انگلیسی OR به فارسی یا , اگر یکی از عملگرها true باشد مقدار بازگشتی true در غیر این صورت false خواهد بود.
- عملگر ! به انگلیسی NOT به فارسی منفی یا نفی , زمانیکه شما از عملگر ! استفاده می کنید معکوس نتیجه عملوند را نیاز دارید.
1a := true
2b := true
3c := false
4
5fmt.Println(a && b) //true
6fmt.Println(a || b) //true
7fmt.Println(!a) //false
8fmt.Println(!c) //true
مثال زیر نتیجه مقادیر متفاوت و عملگر های منطقی را نشان میدهد.
1 // x y x && y x || y !x !y
2 true true true true false false
3 true false false true false true
4 false true false true true false
5 false false false false true true
1.4.4 عملگرهای بیتی #
زبان گو داری 5عملگر بیتی می باشد که به ترتیب :
عملگر | نام |
---|---|
>> | شیفت بیتی به چپ |
<< | شیفت بیتی به راست |
& | AND |
| | OR |
^ | XOR |
- عملگر
>>
به انگلیسی Zero fill left shift یا به اختصار left shift به فارسی که اسم مناسبی براش نیافتیم به نقل از ویکی پدیا شیفت بیتی به چپ , مقدار باینری ما را با استفاده از انتقال یا اضافه کردن صفر ها به سمت چپ انتقال میدهد. - عملگر
<<
به انگلیسی Zero fill right shift یا به اختصار right shift به فارسی که اسم مناسبی براش نیافتیم به نقل از ویکی پدیا شیفت بیتی به راست , مقدار باینری ما را با به سمت راست انتقال میدهد.
در زیر دو مثال رو مشاهده میکنید که از این دو عملگر استفاده شده:
1//example 1
2a := 0b01000101
3b := a << 1
4c := a >> 1
5fmt.Printf("binary:%08b,value:%v", a, a) //binary:01000101,value:69
6fmt.Println("")
7fmt.Printf("binary:%08b,value:%v", b, b) //binary:10001010,value:138
8fmt.Println("")
9fmt.Printf("binary:%08b,value:%v", c, c) //binary:00100010,value:34
10
11fmt.Println("\n\n---------------\n")
12//example 2
13d := 0b01010101
14e := d << 3
15f := d >> 3
16fmt.Printf("binary:%08b,value:%v", d, d) //binary:01010101,value:85
17fmt.Println("")
18fmt.Printf("binary:%08b,value:%v", e, e) //binary:1010101000,value:680
19fmt.Println("")
20fmt.Printf("binary:%08b,value:%v", f, f) //binary:00001010,value:10
21fmt.Println("")
22 */
در مثال دو همانطور که مشاهده کردید زمانی که از عملگر >>
استفاده کردید در صورتی که اولین خانه ی باینری از سمت چپ مقدار 1 داشته باشه مابقی مقدار به صورتی 0 به باینری مون اضافه میشه و در غیر این صورت 1 هامون به همون مقدار به سمت چپ خواهد رفت.
در واقع 08b%
یک شناساگر قالب (format specifier) برای نمایش باینری در هشت خانه است در اینجا میتوانید بیشتر راجب شناساگر های قالب بخوانید.
- عملگر
&
به انگلیسی AND به فارسی و دو مقدار باینری رو با یک دیگر مقایسه و اگر هر بیت مقدار 1 در هر دو طرف داشته باشد آن را 1 نگه میدارد و در غیر اینصورت آن بیت را 0 میکند. - عملگر
|
به انگلیسی OR به فارسی یا دو مقدار باینری رو با یک دیگر مقایسه و اگر هر بیت مقدار 1 در یک طرف یا هر دوطرف داشته باشد آن را 1 نگه میدارد و در غیر اینصورت آن بیت را 0 میکند.
عملگر ^
به انگلیسی XOR به فارسی نامی ندارد دو مقدار باینری رو با یک دیگر مقایسه و اگر هر بیت مقدار 1 در هر دوطرف داشته باشد آن را 0 میکند.
1//& operator example
2a := 0b01000101
3b := 0b01010100
4c := a & b
5fmt.Printf("binary:%08b,value:%v", a, a) //binary:01000101,value:69
6fmt.Println("")
7fmt.Printf("binary:%08b,value:%v", b, b) //binary:01010100,value:84
8fmt.Println("")
9fmt.Printf("binary:%08b,value:%v", c, c) //binary:01000100,value:68
10
11fmt.Println("\n\n---------------\n")
12
13//| operator example
14d := 0b01000101
15e := 0b01010100
16f := d | e
17fmt.Printf("binary:%08b,value:%v", d, d) //binary:01000101,value:69
18fmt.Println("")
19fmt.Printf("binary:%08b,value:%v", e, e) //binary:01010100,value:84
20fmt.Println("")
21fmt.Printf("binary:%08b,value:%v", f, f) //binary:01010101,value:85
22
23fmt.Println("\n\n---------------\n")
24
25//^ operator example
26g := 0b01000101
27h := 0b01010100
28i := a ^ b
29fmt.Printf("binary:%08b,value:%v", g, g) //binary:01000101,value:69
30fmt.Println("")
31fmt.Printf("binary:%08b,value:%v", h, h) //binary:01010100,value:84
32fmt.Println("")
33fmt.Printf("binary:%08b,value:%v", i, i) //binary:00010001,value:17
1.4.5 اولویت عملگرها #
در زبان گو ما یکسری اولویت ها برای عملگرها داریم و همچنین در زبان گو مثل سایر زبان ها پرانتز ()
ترویج دهنده اولویت ها می باشد.
توجه در زبان گو اولویت<<
و>>
بیشتر از + و - می باشد.