ไป - ตัวแปร

ตัวแปรคืออะไรนอกจากชื่อที่กำหนดให้กับพื้นที่เก็บข้อมูลที่โปรแกรมสามารถจัดการได้ ตัวแปรแต่ละตัวใน Go มีประเภทเฉพาะซึ่งกำหนดขนาดและรูปแบบของหน่วยความจำของตัวแปรช่วงของค่าที่สามารถจัดเก็บภายในหน่วยความจำนั้นและชุดของการดำเนินการที่สามารถนำไปใช้กับตัวแปรได้

ชื่อของตัวแปรสามารถประกอบด้วยตัวอักษรตัวเลขและอักขระขีดล่าง ต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่าง อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กแตกต่างกันเนื่องจาก Go เป็นตัวพิมพ์เล็กและใหญ่ ตามประเภทพื้นฐานที่อธิบายไว้ในบทที่แล้วจะมีประเภทตัวแปรพื้นฐานดังต่อไปนี้ -

ซีเนียร์ No ประเภทและคำอธิบาย
1

byte

โดยทั่วไปเป็นอ็อกเต็ตเดี่ยว (หนึ่งไบต์) นี่คือประเภทไบต์

2

int

ขนาดของจำนวนเต็มที่เป็นธรรมชาติที่สุดสำหรับเครื่อง

3

float32

ค่าทศนิยมที่มีความแม่นยำเดียว

ภาษาโปรแกรม Go ยังอนุญาตให้กำหนดตัวแปรประเภทอื่น ๆ เช่น Enumeration, Pointer, Array, Structure และ Union ซึ่งเราจะพูดถึงในบทต่อ ๆ ไป ในบทนี้เราจะเน้นเฉพาะประเภทตัวแปรพื้นฐาน

นิยามตัวแปรใน Go

นิยามตัวแปรจะบอกคอมไพลเลอร์ว่าจะสร้างหน่วยเก็บข้อมูลที่ใดและเท่าใดสำหรับตัวแปร นิยามตัวแปรระบุชนิดข้อมูลและมีรายการตัวแปรประเภทนั้นอย่างน้อยหนึ่งรายการดังนี้ -

var variable_list optional_data_type;

ที่นี่ optional_data_type เป็นประเภทข้อมูล Go ที่ถูกต้องรวมถึงไบต์ int float32 complex64 บูลีนหรือวัตถุที่ผู้ใช้กำหนดเอง ฯลฯ และ variable_listอาจประกอบด้วยชื่อตัวบ่งชี้อย่างน้อยหนึ่งชื่อโดยคั่นด้วยเครื่องหมายจุลภาค การประกาศที่ถูกต้องบางส่วนแสดงไว้ที่นี่ -

var  i, j, k int;
var  c, ch byte;
var  f, salary float32;
d =  42;

คำสั่ง “var i, j, k;”ประกาศและกำหนดตัวแปร i, j และ k; ซึ่งสั่งให้คอมไพเลอร์สร้างตัวแปรชื่อ i, j และ k ประเภท int

ตัวแปรสามารถเริ่มต้นได้ (กำหนดค่าเริ่มต้น) ในการประกาศ ประเภทของตัวแปรจะถูกตัดสินโดยคอมไพเลอร์โดยอัตโนมัติตามค่าที่ส่งผ่านไป initializer ประกอบด้วยเครื่องหมายเท่ากับตามด้วยนิพจน์คงที่ดังนี้ -

variable_name = value;

ตัวอย่างเช่น,

d = 3, f = 5;    // declaration of d and f. Here d and f are int

สำหรับคำจำกัดความที่ไม่มีตัวเริ่มต้น: ตัวแปรที่มีระยะเวลาการจัดเก็บแบบคงที่จะเริ่มต้นโดยปริยายด้วยศูนย์ (ไบต์ทั้งหมดมีค่า 0); ค่าเริ่มต้นของตัวแปรอื่น ๆ ทั้งหมดเป็นค่าศูนย์ของชนิดข้อมูล

การประกาศประเภทคงที่ใน Go

การประกาศตัวแปรชนิดคงที่ให้การรับรองกับคอมไพลเลอร์ว่ามีตัวแปรหนึ่งตัวพร้อมกับชนิดและชื่อที่กำหนดเพื่อให้คอมไพลเลอร์สามารถดำเนินการรวบรวมต่อไปได้โดยไม่ต้องการรายละเอียดทั้งหมดของตัวแปร การประกาศตัวแปรมีความหมายในช่วงเวลาของการคอมไพล์เท่านั้นคอมไพเลอร์ต้องการการประกาศตัวแปรจริงในขณะที่เชื่อมโยงโปรแกรม

ตัวอย่าง

ลองใช้ตัวอย่างต่อไปนี้ซึ่งมีการประกาศตัวแปรด้วยชนิดและเริ่มต้นภายในฟังก์ชันหลัก -

package main

import "fmt"

func main() {
   var x float64
   x = 20.0
   fmt.Println(x)
   fmt.Printf("x is of type %T\n", x)
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -

20
x is of type float64

การประกาศประเภทไดนามิก / การอนุมานประเภทใน Go

การประกาศตัวแปรชนิดไดนามิกต้องการให้คอมไพเลอร์ตีความประเภทของตัวแปรตามค่าที่ส่งผ่านไป คอมไพเลอร์ไม่ต้องการตัวแปรที่จะต้องพิมพ์แบบคงที่เป็นข้อกำหนดที่จำเป็น

ตัวอย่าง

ลองใช้ตัวอย่างต่อไปนี้ซึ่งมีการประกาศตัวแปรโดยไม่มีประเภทใด ๆ ขอให้สังเกตในกรณีของการอนุมานประเภทเราเริ่มต้นตัวแปรy ด้วย: = ตัวดำเนินการในขณะที่ x เริ่มต้นโดยใช้ตัวดำเนินการ =

package main

import "fmt"

func main() {
   var x float64 = 20.0

   y := 42 
   fmt.Println(x)
   fmt.Println(y)
   fmt.Printf("x is of type %T\n", x)
   fmt.Printf("y is of type %T\n", y)	
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -

20
42
x is of type float64
y is of type int

การประกาศตัวแปรผสมใน Go

ตัวแปรประเภทต่างๆสามารถประกาศได้ในครั้งเดียวโดยใช้การอนุมานประเภท

ตัวอย่าง

package main

import "fmt"

func main() {
   var a, b, c = 3, 4, "foo"  
	
   fmt.Println(a)
   fmt.Println(b)
   fmt.Println(c)
   fmt.Printf("a is of type %T\n", a)
   fmt.Printf("b is of type %T\n", b)
   fmt.Printf("c is of type %T\n", c)
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -

3
4
foo
a is of type int
b is of type int
c is of type string

ค่า lvalues ​​และ rvalues ​​ใน Go

มีนิพจน์สองประเภทใน Go -

  • lvalue- นิพจน์ที่อ้างถึงตำแหน่งหน่วยความจำเรียกว่านิพจน์ "lvalue" ค่า lvalue อาจปรากฏเป็นด้านซ้ายหรือด้านขวาของงาน

  • rvalue- คำว่า rvalue หมายถึงค่าข้อมูลที่เก็บไว้ที่ที่อยู่บางส่วนในหน่วยความจำ rvalue คือนิพจน์ที่ไม่สามารถกำหนดค่าได้ซึ่งหมายความว่า rvalue อาจปรากฏทางด้านขวา แต่ไม่ใช่ด้านซ้ายมือของงาน

ตัวแปรคือ lvalues ​​ดังนั้นจึงอาจปรากฏทางด้านซ้ายมือของงาน ตัวอักษรตัวเลขเป็นค่า r จึงไม่สามารถกำหนดได้และจะไม่ปรากฏทางด้านซ้ายมือ

ข้อความต่อไปนี้ใช้ได้ -

x = 20.0

ข้อความต่อไปนี้ไม่ถูกต้อง มันจะสร้างข้อผิดพลาดเวลาคอมไพล์ -

10 = 20