ما هو الثابت أو Const في Golang ؟ إليك ما تحتاج إلى معرفته حول استخدام الثوابت في Go .
كما يوحي الاسم، ثابت يعني ثابت. والشيء نفسه ينطبق على لغات البرمجة، أي بمجرد تعريف قيمة الثابت، لا يمكن تعديلها أكثر من ذلك. يمكن أن يكون هناك أي نوع أساسي من البيانات الثابتة مثل ثابت صحيح، أو ثابت ديناميكي، أو ثابت حرفي، أو سلسلة.

كيفية الإعلان: يتم الإعلان عن الثوابت مثل المتغيرات ولكن استخدم كلمة const كبادئة لإعلان الثوابت بنوع بيانات محدد. لا يمكن إعلان الثوابت باستخدام صيغة ": " = ".
على سبيل المثال:
package main
import "fmt"
const PI = 3.14
func main()
{
const GFG = "Quantrimang"
fmt.Println("Hello", GFG)
fmt.Println("Happy", PI, "Day")
const Correct= true
fmt.Println("Go rules?", Correct)
}
نتيجة:
Hello Quantrimang
Happy 3.14 Day
Go rules? true
أشياء يجب معرفتها عن الثوابت في Golang
الثوابت الرقمية بدون نوع ومع النوع
تتصرف الثوابت المكتوبة مثل المتغيرات غير القابلة للتغيير والتي يمكنها التفاعل فقط مع نفس الأنواع، وتتصرف الثوابت غير المكتوبة مثل الثوابت الحرفية التي يمكنها التفاعل مع أنواع مماثلة. يمكن إعلان الثوابت بنوع أو بدون نوع في Go. تُظهر الأمثلة التالية الثوابت الرقمية المكتوبة وغير المكتوبة، والمسماة وغير المسماة.
const untypedInteger = 123
const untypedFloating = 123.12
const typedInteger int = 123
const typedFloatingPoint float64 = 123.12
فيما يلي قائمة الثوابت في لغة Go:
- الثوابت (الثوابت الصحيحة، الثوابت الديناميكية، الثوابت المعقدة)
- سلسلة من الأحرف
- ثابت منطقي
عدد ثابت
الثوابت الرقمية هي قيم ذات دقة عالية. نظرًا لأن Go هي لغة ذات نوع ثابت، فهي لا تسمح بالعمليات التي تجمع الأنواع الرقمية. لا يمكنك الإضافة float64
إلى int
، أو حتى int32
إلى int
. ومع ذلك فإنه لا يزال من الصحيح أن نكتب 1e6*time.Second
أو math.Exp(1)
أو حتى 1<>
. في Go، تتصرف الثوابت، على عكس المتغيرات، مثل الأرقام العادية.
الثوابت الرقمية هي من ثلاثة أنواع:
- عدد صحيح
- النقطة العائمة
- معقد
ثابت صحيح:
- تحدد البادئة القاعدة: 0x أو 0X للسداسي عشر، و0 للثماني، ولا شيء للعشري.
- يمكن أن يحتوي أيضًا الحرف الصحيح على لاحقة عبارة عن مزيج من U (أحرف كبيرة) وL (أحرف صغيرة)، للإشارة إلى غير موقّع وطويل على التوالي.
- يمكن أن يكون ثابتًا عشريًا أو ثمانيًا أو سداسيًا عشريًا.
- يمكن لـ int تخزين ما يصل إلى عدد صحيح مكون من 64 بت وأحيانًا أقل.
فيما يلي بعض الأمثلة على الثوابت الصحيحة:
85 /* thập phân */
0213 /* bát phân */
0x4b /* thập lục phân */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */
212 /* Hợp lệ */
215u /* Hợp lệ */
0xFeeL /* Hợp lệ */
078 /* Không hợp lệ: 8 không phải là chữ số bát phân */
032UU /* Không hợp lệ: không thể lặp lại hậu tố */
الثوابت المعقدة:
تعمل الثوابت المعقدة بشكل مشابه جدًا لثوابت النقطة العائمة. هو زوج مرتب أو زوج حقيقي من الثوابت الصحيحة (أو المعلمات). ويتم فصل الثوابت بفواصل، ويتم وضع أزواج الأرقام بين قوسين. الثابت الأول هو الجزء الحقيقي، والثابت الثاني هو الجزء التخيلي. يستخدم الثابت المعقد COMPLEX*8، 8 بايت من مساحة التخزين.
على سبيل المثال:
(0.0, 0.0) (-123.456E+30, 987.654E-29)
ثابت النوع الديناميكي:
- تحتوي ثوابت الأعداد الحقيقية على جزء صحيح، وجزء عشري، وجزء كسري، وجزء أس.
- يمكن تمثيلها على أنها عدد حقيقي ثابت في شكل عشري أو أسي.
- عندما يتم التعبير عنها في شكل عدد عشري، يجب أن تتضمن نقطة عشرية، أو أس، أو كليهما.
- وعندما يتم التعبير عنها في صورة أسي، فيجب أن تتضمن جزءًا صحيحًا، أو جزءًا كسريًا، أو كليهما.
على سبيل المثال:
3.14159 /* Hợp lệ */
314159E-5L /* Hợp lệ */
510E /* Không hợp lệ: số mũ không đầy đủ */
210f /* Không hợp lệ: không có số thập phân hoặc số mũ */
.e55 /* Không hợp lệ: thiếu số nguyên hoặc phân số */
سلسلة من الأحرف
- يدعم Go نوعين من الأحرف النصية، أي
” ”
(نمط الاقتباس المزدوج) و ‘ ‘
(نمط الاقتباس العكسي).
- يمكن ربط السلاسل باستخدام المشغلين
+
and +=
.
- تحتوي السلاسل على أحرف مشابهة للأحرف الحرفية: أحرف عادية، وتسلسلات إفلات، وأحرف عالمية. وهذه شخصية بلا أسلوب.
- القيمة الصفرية لأنواع السلسلة هي السلسلة الفارغة، والتي يمكن تمثيلها بواسطة
” ”
أو ”
في الأحرف.
- يمكن مقارنة جميع أنواع السلاسل باستخدام عوامل مثل
==
و !=
(لمقارنة الأنواع المتشابهة)
بناء الجملة:
kiểu _string struct {
các phần tử *byte // các byte cơ bản
len int // số byte
}
على سبيل المثال:
"hello, quantrimang"
"hello, \
quantrimang"
"hello, " "quan" "trimang"
هنا، العبارات الثلاث متشابهة، أي أنها لا تحتوي على نوع محدد.
على سبيل المثال:
package main
import "fmt"
func main()
{
const A = "GFG"
var B = "GeeksforGeeks"
// Chuỗi Concat.
var helloWorld = A+ " " + B
helloWorld += "!"
fmt.Println(helloWorld)
// Chuỗi so sánh.
fmt.Println(A == "GFG")
fmt.Println(B < a)="">
نتيجة:
GFG Quantrimang!
true
false
تعقيد الوقت: O(1)
الفضاء المساعد: O(1)
ثابت منطقي
الثوابت المنطقية تشبه ثوابت السلسلة. يتم تطبيق نفس القواعد على ثوابت السلسلة. الفرق الوحيد هو أنه يحتوي على اثنين من الثابتين بدون نوع true
و false
.
package main
import "fmt"
const Pi = 3.14
func main()
{
const trueConst = true
// Định nghĩa kiểu bằng từ khóa type
type myBool bool
var defaultBool = trueConst // được phép
var customBool myBool = trueConst // được phép
// defaultBool = customBool // không được phép
fmt.Println(defaultBool)
fmt.Println(customBool)
}
نتيجة:
true
true
تعقيد الوقت: O(1)
الفضاء المساعد: O(1)
الثوابت في Go: تحتوي Go على ثوابت أحرفية وسلاسل وقيم منطقية وأرقام. يعلن Const عن قيمة ثابتة. يمكن أن يحدث بيان const
عندما يكون هناك متغير وبالتالي، تنفيذ العمليات الحسابية دون أي دقة ثابتة.
// Minh họa hằng số bằng cách dùng go.
package main
import (
"fmt"
"math"
)
const s string = "Quantrimang"
func main() {
fmt.Println(s)
const n = 5
const d = 3e10 / n
fmt.Println(d)
fmt.Println(int64(d))
fmt.Println(math.Sin(n))
}
نتيجة:
Quantrimang
6e+09
6000000000
-0.9589242746631385
تعقيد الوقت: O(1)
الفضاء المساعد: O(1)
إذا كنت تريد تعريف ثوابت متعددة في وقت واحد، فيمكنك القيام بذلك باستخدام كتلة من الأقواس كما هو موضح أدناه.
package main
import "fmt"
const (
GFG = "Quantrimang"
Correct = true
Pi = 3.14
)
// Hàm chính
func main() {
fmt.Println("value of GFG : ", GFG)
fmt.Println("value of Correct : ", Correct)
fmt.Println("value of Pi : ", Pi)
}
نتيجة:
value of GFG : Quantrimang
value of Correct : true
value of Pi : 3.14