ตัวดำเนินการประกาศตัวแปรสั้น (:=) ใน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 จะทำงานได้ดีโดยไม่มีข้อผิดพลาดใดๆ เนื่องจากมีตัวแปรใหม่อย่างน้อย 1 ตัว นั่นคือ 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