ข้ามไปยังเนื้อหา

Variables, Types และ Zero Values

ใน TypeScript คุณมี let สำหรับตัวแปรที่เปลี่ยนค่าได้, const สำหรับ binding แบบ immutable และ type inference ผ่าน : คุณยังคุ้นกับค่าที่เป็น undefined ก่อนถูกกำหนดค่าด้วย

Go มีกลไกที่คล้ายกันแต่มีกฎที่สะอาดกว่า และมีแนวคิดหนึ่งที่ TypeScript ไม่มีคำตอบโดยตรง นั่นคือ zero values

Go มีสองรูปแบบ การประกาศแบบสั้น := (ใช้ได้เฉพาะภายในฟังก์ชัน) จะ infer type จากฝั่งขวามือ — เหมือนกับ let x = ใน TypeScript ส่วนรูปแบบยาว var ใช้ในระดับ package หรือเมื่อคุณต้องการประกาศโดยยังไม่กำหนดค่าทันที

TypeScript
// TypeScript
let count: number = 0;
let name = "Alice"; // inferred as string
const MAX = 100;
Go
// Go
var count int = 0
name := "Alice" // inferred as string
const MAX = 100

โอเปอเรเตอร์ := คือตัวหลักของ Go สำหรับตัวแปรในระดับ local ทั้งประกาศและกำหนดค่าในขั้นตอนเดียว — ไม่ต้องมี let ไม่ต้องระบุ type annotation เมื่อ type ชัดเจนอยู่แล้ว

TypeScript
let score = 42; // number
let ratio = 3.14; // number
let label = "hello"; // string
let active = true; // boolean
Go
score := 42 // int
ratio := 3.14 // float64
label := "hello" // string
active := true // bool

ค่าคงที่ใน Go ทำงานเหมือน const ใน TypeScript — เป็น immutable และประเมินค่าตอน compile time นอกจากนี้ Go ยังมี iota สำหรับสร้างลำดับแบบ enum ที่เพิ่มค่าอัตโนมัติ (จะกล่าวถึงภายหลัง)

TypeScript
const PI = 3.14159;
const APP_NAME = "MyApp";
Go
const PI = 3.14159
const AppName = "MyApp"
package main
import "fmt"
func main() {
// Short declaration
name := "Gopher"
age := 3
// Long form (package-level style)
var score int = 100
const greeting = "Hello"
fmt.Printf("%s, %s! Age: %d, Score: %d\n", greeting, name, age, score)
}
โอเปอเรเตอร์ใดใช้สำหรับการประกาศตัวแปรแบบสั้นภายในฟังก์ชันใน Go?
zero value ของ string ใน Go คืออะไร?
การประกาศตัวแปรของ Go รูปแบบใดที่ใช้งานได้ในระดับ package (นอกฟังก์ชันใดๆ)?
ใน Go ค่า const ถูกประเมินค่าที่: