يتم استخدام عامل إعلان المتغير القصير (:=) في Golang لإنشاء متغيرات تحمل اسمًا فريدًا وقيمة أولية. الغرض الرئيسي من استخدام هذا المشغل هو إعلان المتغيرات المحلية وتعيينها داخل الوظائف وتضييق نطاق المتغيرات. يتم تحديد نوع المتغير حسب نوع التعبير. تُستخدم الكلمة الأساسية var أيضًا لإنشاء متغيرات من نوع معين. لذا يمكننا القول أن هناك طريقتين لإنشاء المتغيرات في Golang على النحو التالي:

- استخدام الكلمة الأساسية var
- استخدم عامل إعلان المتغير القصير (:=)
الآن دعونا نتعلم كيفية استخدام عامل إعلان المتغير القصير في Golang!
المحتوى الرئيسي
بناء الجملة لاستخدام عامل إعلان المتغير القصير في Golang
variable_name := biểu thức hoặc giá trị
هنا، يجب عليك تهيئة المتغير مباشرة بعد الإعلان عنه. ولكن باستخدام الكلمة الأساسية var يمكنك تجنب التهيئة في وقت الإعلان. ليس هناك حاجة لذكر نوع المتغير. يتم استخدام التعبير أو القيمة الموجودة على الجانب الأيمن لتقييم نوع المتغير.
على سبيل المثال: هنا نقوم بإعلان المتغيرات باستخدام عامل الإعلان القصير وعدم تحديد نوع المتغير. يتم تحديد نوع المتغير من خلال نوع التعبير الموجود على الجانب الأيمن من المشغل :=.
// Minh họa chương trình Go dùng := (toán tử khai báo ngắn)
package main
import "fmt"
func main() {
// khai báo và khởi tạo biến
a := 30
// lấy một biến chuỗi
Language: = "Go Programming"
fmt.Println("The Value of a is: ", a)
fmt.Println("The Value of Language is: ", Language)
}
نتيجة:
The Value of a is: 30
The Value of Language is: Go Programming
إعلان متغيرات متعددة باستخدام عامل الإعلان القصير
يمكن أيضًا استخدام عامل الإعلان القصير لإعلان متغيرات متعددة من نفس النوع أو أنواع مختلفة في إعلان واحد. يتم تقييم أنواع هذه المتغيرات من خلال التعبير الموجود على الجانب الأيمن من المشغل :=.
على سبيل المثال:
// Minh họa chương trình Go dùng toán tử khai báo ngắn := short để khai báo nhiều
// biến thành một câu lệnh khai báo duy nhất
package main
import "fmt"
func main() {
// nhiều biến của cùng kiểu(int)
geek1, geek2, geek3 := 117, 7834, 5685
// nhiều biến của các kiểu khác nhau
geek4, geek5, geek6 := "GFG", 859.24, 1234
// Hiện giá trị và kiểu của biến
fmt.Printf("The value of geek1 is : %d\n", geek1)
fmt.Printf("The type of geek1 is : %T\n", geek1)
fmt.Printf("\nThe value of geek2 is : %d\n", geek2)
fmt.Printf("The type of geek2 is : %T\n", geek2)
fmt.Printf("\nThe value of geek3 is : %d\n", geek3)
fmt.Printf("The type of geek3 is : %T\n", geek3)
fmt.Printf("\nThe value of geek4 is : %s\n", geek4)
fmt.Printf("The type of geek4 is : %T\n", geek4)
fmt.Printf("\nThe value of geek5 is : %f\n", geek5)
fmt.Printf("The type of geek5 is : %T\n", geek5)
fmt.Printf("\nThe value of geek6 is : %d\n", geek6)
fmt.Printf("The type of geek6 is : %T\n", geek6)
}
نتيجة:
The value of geek1 is : 117
The type of geek1 is : int
The value of geek2 is : 7834
The type of geek2 is : int
The value of geek3 is : 5685
The type of geek3 is : int
The value of geek4 is : GFG
The type of geek4 is : string
The value of geek5 is : 859.240000
The type of geek5 is : float64
The value of geek6 is : 1234
The type of geek6 is : int
نقاط هامة يجب تذكرها:
يمكن استخدام عامل الإعلان القصير عندما يتم إعلان متغير واحد على الأقل على الجانب الأيسر من العامل :=كمتغير جديد. يعمل عامل إعلان المتغير القصير مثل التعيين للمتغيرات المعلنة داخل نفس الكتلة المعجمية. ولكي نفهم هذا المفهوم بشكل أفضل، دعونا نأخذ مثالا.
المثال 1: سيقوم البرنامج أدناه بإلقاء خطأ لأنه لا يوجد متغير جديد على الجانب الأيسر من المشغل :=.
// Minh họa chương trình Go dùng khai báo biến ngắn
package main
import "fmt"
func main() {
// lấy hai biến
p, q := 100, 200
fmt.Println("Value of p ", p, "Value of q ", q)
// Báo lỗi vì không có biến mới ở bên tay trái của :=
p, q := 500, 600
fmt.Println("Value of p ", p, "Value of q ", q)
}
خطأ:
./prog.go:17:10: no new variables on left side of :=
مثال 2:
في البرنامج أدناه، يمكنك رؤية السطر geek3، geek2 := 456، 200 سيعمل بشكل جيد دون أي خطأ لأنه يوجد متغير جديد واحد على الأقل أي geek3 على الجانب الأيسر من المشغل :=.
// Chương trình Go dùng toán tử khai báo biến ngắn
package main
import "fmt"
func main() {
// Ở đây, khai báo biến ngắn hoạt động
// như một phép gán cho biến geek1
// vì cùng một biến có trong cùng một khối
// do đó giá trị của geek2 được thay đổi từ 100 thành 200
geek1, geek2 := 78, 100
// ở đây, := được sử dụng như một phép gán cho geek2
// vì nó đã được khai báo. Ngoài ra, dòng này
// sẽ hoạt động tốt vì geek3 mới được tạo
// biến
geek3, geek2 := 456, 200
// Nếu bạn thử chạy các dòng được chú thích,
// thì trình biên dịch sẽ báo lỗi vì
// các biến này đã được định nghĩa
// geek1, geek2 := 745, 956
// geek3 := 150
// Hiện giá trị của các biến
fmt.Printf("The value of geek1 and geek2 is : %d %d\n", geek1, geek2)
fmt.Printf("The value of geek3 and geek2 is : %d %d\n", geek3, geek2)
}
نتيجة:
The value of geek1 and geek2 is : 78 200
The value of geek3 and geek2 is : 456 200
تعتبر لغة Go لغة ذات نوع قوي لأنه لا يمكنك تعيين قيمة نوع بيانات مختلف لمتغير معلن.
على سبيل المثال:
// Minh họa chương trình Go dùng toán tử khai báo biến ngắn
package main
import "fmt"
func main() {
// lấy một biến của int
z := 50
fmt.Printf("Value of z is %d", z)
// gán lại giá trị của kiểu chuỗi
// nó sẽ đưa ra lỗi
z := "Golang"
}
خطأ:
./prog.go:16:4: no new variables on left side of :=
./prog.go:16:7: cannot use “Golang” (type string) as type int in assignment
في إعلان متغير قصير، يسمح Golang بتهيئة مجموعة من المتغيرات باستخدام استدعاء وظيفة تقوم بإرجاع قيم متعددة. أو يمكنك القول أنه يمكن أيضًا تعيين قيم للمتغيرات والتي يتم تقييمها في وقت التشغيل.
على سبيل المثال:
// Tại đây, hàm math.Max function trả về
// số lớn nhất trong biến i
i := math.Max(x, y)
متغير محلي أو متغير عالمي
بمساعدة عامل إعلان المتغير القصير (:=)، يمكنك إعلان المتغيرات المحلية التي يقتصر نطاقها على مستوى الكتلة فقط. بشكل عام، يتم إعلان المتغيرات المحلية داخل كتلة الوظيفة. إذا حاولت إعلان المتغيرات العالمية باستخدام عامل الإعلان القصير، فستحصل على خطأ.
مثال 1:
// Chương trình Go hiển thị cách sử dụng toán tử :=
// để khai báo các biến cục bộ
package main
import "fmt"
// sử dụng từ khóa var để khai báo
// và khởi tạo biến
// đó là package hoặc bạn có thể nói
// phạm vi cấp toàn cục
var geek1 = 900
// sử dụng khai báo biến ngắn
// sẽ báo lỗi
geek2 := 200
func main() {
// truy cập geek1 bên trong hàm
fmt.Println(geek1)
// truy cập geek2 bên trong hàm
fmt.Println(geek2)
}
خطأ:
./prog.go:15:1: syntax error: non-declaration statement outside function body
مثال 2:
// Chương trình Go dùng toán tử := operator
// để khai báo các biến cục bộ
package main
import "fmt"
// dùng từ khóa var để khai báo
// và khởi tạo biến
// nó đóng gói hoặc bạn có thể báo
// phạm vi cấp toàn cục
var geek1 = 900
func main() {
// dùng khai báo biến ngắn
// bên trong hàm chính
// nó có phạm vi cục bộ tức là không thể
// truy cập bên ngoài hàm chính
geek2 := 200
// truy cập geek1 bên trong hàm này
fmt.Println(geek1)
// truy cập geek2 bên trong hàm này
fmt.Println(geek2)
}
نتيجة:
900
200