ประเภทข้อมูลใน Go
ด้านล่างแสดงประเภทในตัวทั้งหมดของภาษา Go เพื่อใช้อ้างอิง ดูรายละเอียดเพิ่มเติมได้ที่ คู่มืออ้างอิง-ประเภท
ประเภทบูลีน
ประเภทบูลีนมีเพียงค่าจริงและค่าเท็จ
| ประเภท | คำอธิบาย |
|---|---|
bool | true เป็นค่าจริง false เป็นค่าเท็จ |
TIP
ใน Go จำนวนเต็ม 0 ไม่ได้แทนค่าเท็จ และจำนวนเต็มที่ไม่ใช่ศูนย์ก็ไม่สามารถแทนค่าจริงได้ นั่นคือตัวเลขไม่สามารถใช้แทนค่าบูลีนในการตัดสินใจเชิงตรรกะ ทั้งสองเป็นประเภทที่ต่างกันโดยสิ้นเชิง
ประเภทจำนวนเต็ม
Go จัดสรรประเภทที่ต่างกันสำหรับจำนวนเต็มจำนวนบิตที่ต่างกัน แบ่งออกเป็นจำนวนเต็มไม่มีเครื่องหมายและจำนวนเต็มมีเครื่องหมายเป็นหลัก
| ลำดับ | ประเภทและคำอธิบาย |
|---|---|
uint8 | จำนวนเต็ม 8 บิตไม่มีเครื่องหมาย |
uint16 | จำนวนเต็ม 16 บิตไม่มีเครื่องหมาย |
uint32 | จำนวนเต็ม 32 บิตไม่มีเครื่องหมาย |
uint64 | จำนวนเต็ม 64 บิตไม่มีเครื่องหมาย |
int8 | จำนวนเต็ม 8 บิตมีเครื่องหมาย |
int16 | จำนวนเต็ม 16 บิตมีเครื่องหมาย |
int32 | จำนวนเต็ม 32 บิตมีเครื่องหมาย |
int64 | จำนวนเต็ม 64 บิตมีเครื่องหมาย |
uint | จำนวนเต็มไม่มีเครื่องหมาย อย่างน้อย 32 บิต |
int | จำนวนเต็ม อย่างน้อย 32 บิต |
uintptr | เทียบเท่ากับจำนวนเต็ม 64 บิตไม่มีเครื่องหมาย แต่ใช้เฉพาะสำหรับการดำเนินการพอยน์เตอร์ ใช้เก็บที่อยู่พอยน์เตอร์แบบคงที่ |
ประเภทจำนวนจริง
จำนวนจริง IEEE-754 แบ่งออกเป็นจำนวนจริงความแม่นยำเดี่ยวและจำนวนจริงความแม่นยำคู่
| ประเภท | คำอธิบาย |
|---|---|
float32 | จำนวนจริง IEEE-754 32 บิต |
float64 | จำนวนจริง IEEE-754 64 บิต |
ประเภทจำนวนเชิงซ้อน
| ประเภท | คำอธิบาย |
|---|---|
complex128 | จำนวนจริงและจำนวนจินตภาพ 64 บิต |
complex64 | จำนวนจริงและจำนวนจินตภาพ 32 บิต |
ประเภทอักขระ
สตริงในภาษา Go เข้ากันได้กับ UTF-8 อย่างสมบูรณ์
| ประเภท | คำอธิบาย |
|---|---|
byte | เทียบเท่า uint8 สามารถแสดงอักขระ ANSCII |
rune | เทียบเท่า int32 สามารถแสดงอักขระ Unicode |
string | สตริงคือลำดับไบต์ สามารถแปลงเป็นประเภท []byte ได้ คือสไลซ์ไบต์ |
ประเภทอนุพันธ์
| ประเภท | ตัวอย่าง |
|---|---|
| อาร์เรย์ | [5]int อาร์เรย์จำนวนเต็มความยาว 5 |
| สไลซ์ | []float64 สไลซ์จำนวนจริง 64 บิต |
| แมป | map[string]int แมปที่มีคีย์เป็นประเภทสตริง ค่าเป็นจำนวนเต็ม |
| สตรักเจอร์ | type Gopher struct{} สตรักเจอร์ Gopher |
| พอยน์เตอร์ | *int พอยน์เตอร์จำนวนเต็ม |
| ฟังก์ชัน | type f func() ประเภทฟังก์ชันที่ไม่มีพารามิเตอร์ ไม่มีค่าส่งคืน |
| อินเทอร์เฟซ | type Gopher interface{} อินเทอร์เฟซ Gopher |
| แชนเนล | chan int แชนเนลจำนวนเต็ม |
ค่าศูนย์
ในเอกสารทางการเรียกค่าศูนย์ว่า zero value ค่าศูนย์ไม่ใช่แค่ศูนย์ตัวเลขตามตัวอักษร แต่เป็นค่าว่างหรือค่าเริ่มต้นของประเภทหนึ่งๆ จะแม่นยำกว่า
| ประเภท | ค่าศูนย์ |
|---|---|
| ประเภทตัวเลข | 0 |
| ประเภทบูลีน | false |
| ประเภทสตริง | "" |
| อาร์เรย์ | ชุดค่าศูนย์ของประเภทที่ตรงกันความยาวคงที่ |
| สตรักเจอร์ | สตรักเจอร์ที่ฟิลด์ภายในเป็นค่าศูนย์ทั้งหมด |
| สไลซ์ แมป ฟังก์ชัน อินเทอร์เฟซ แชนเนล พอยน์เตอร์ | nil |
nil
nil คล้ายกับ none หรือ null ในภาษาอื่น แต่ไม่เท่ากัน nil เป็นเพียงค่าศูนย์ของประเภทอ้างอิงบางประเภทเท่านั้น และไม่屬於ประเภทใดๆ จากซอร์สโค้ดจะเห็นว่า nil เป็นเพียงตัวแปรหนึ่ง
var nil Typeและคำสั่งเช่น nil == nil ไม่สามารถผ่านการคอมไพล์ได้
