Golang'da kısa değişken bildirim operatörü (:=), benzersiz bir ada ve başlangıç değerine sahip değişkenler oluşturmak için kullanılır. Bu operatörün kullanılmasının temel amacı, fonksiyonlar içerisinde yerel değişkenleri bildirmek, başlatmak ve değişkenlerin kapsamını daraltmaktır. Değişkenin türü, ifadenin türüne göre belirlenir. var anahtar sözcüğü ayrıca belirli bir türdeki değişkenleri oluşturmak için de kullanılır. Yani Golang'da değişken oluşturmanın iki yolu olduğunu şu şekilde söyleyebiliriz:

- var anahtar sözcüğünü kullanma
- Kısa değişken bildirim operatörünü (:=) kullanın
Şimdi Golang'da kısa değişken bildirim operatörünün nasıl kullanılacağını öğrenelim!
Ana içerik
Golang'da kısa değişken bildirim operatörünü kullanma sözdizimi
variable_name := biểu thức hoặc giá trị
Burada değişkeni tanımladıktan hemen sonra başlatmanız gerekiyor. Ancak var anahtar sözcüğünü kullanarak bildirim zamanında başlatmayı önleyebilirsiniz. Değişkenin tipini belirtmeye gerek yok. Sağ taraftaki ifade veya değer değişkenin türünü değerlendirmek için kullanılır.
Örnek: Burada değişkenleri kısa bildirim operatörü kullanarak bildiriyoruz ve değişkenin türünü belirtmiyoruz. Değişkenin türü, operatörün sağ tarafındaki ifadenin türüne göre belirlenir :=
.
// 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)
}
Sonuç:
The Value of a is: 30
The Value of Language is: Go Programming
Kısa bildirim operatörünü kullanarak birden fazla değişkeni bildirme
Kısa bildirim operatörü aynı veya farklı tipteki birden fazla değişkeni tek bir bildirimde bildirmek için de kullanılabilir. Bu değişkenlerin tipleri operatörünün sağ tarafındaki ifade ile değerlendirilir :=
.
Örneğin:
// 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)
}
Sonuç:
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
Hatırlanması gereken önemli noktalar:
:=
Kısa bildirim operatörü, operatörün sol tarafındaki değişkenlerden en az birinin yeni olarak bildirilmesi durumunda kullanılabilir . Kısa değişken bildirim operatörü, aynı sözcük bloğu içerisinde bildirilen değişkenlere atama gibi çalışır. Bu kavramı daha iyi anlamak için bir örnek ele alalım.
Örnek 1: Aşağıdaki program, operatörünün sol tarafında yeni bir değişken olmadığından hata verecektir :=
.
// 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)
}
Hata:
./prog.go:17:10: no new variables on left side of :=
Örnek 2:
Aşağıdaki programda geek3, geek2 := 456, 200 satırını görebilirsiniz, herhangi bir hata olmadan çalışacaktır çünkü operatörün sol tarafında en azından bir yeni değişken (geek3) bulunmaktadır :=
.
// 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)
}
Sonuç:
The value of geek1 and geek2 is : 78 200
The value of geek3 and geek2 is : 456 200
Go, tanımlanmış bir değişkene farklı bir veri türünden değer atayamayacağınız için güçlü tipli bir dildir.
Örneğin:
// 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"
}
Hata:
./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, kısa bir değişken bildiriminde, birden fazla değer döndüren bir fonksiyon çağrısı kullanarak bir dizi değişkenin başlatılmasına izin verir. Veya değişkenlere çalışma zamanında değerlendirilen değerler de atanabilir diyebilirsiniz.
Örneğin:
// Tại đây, hàm math.Max function trả về
// số lớn nhất trong biến i
i := math.Max(x, y)
Yerel değişken veya global değişken
Kısa değişken bildirim operatörü (:=) yardımıyla, kapsamı yalnızca blok düzeyinde olan yerel değişkenler bildirebilirsiniz. Genellikle yerel değişkenler fonksiyon bloğunun içerisinde tanımlanır. Kısa bildirim operatörünü kullanarak global değişkenleri bildirmeye çalışırsanız bir hata alırsınız.
Örnek 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)
}
Hata:
./prog.go:15:1: syntax error: non-declaration statement outside function body
Örnek 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)
}
Sonuç:
900
200