Go มีข้อมูลทั้งหมด 11 แบบ

Go เป็นภาษาที่ข้อมูลนั้นมีประเภทข้อมูล คือมี Type นั่นเอง โดยที่ตามสเปคของภาษา จะมี Type พื้นฐานมาให้ทั้งหมด 11 แบบหลักๆด้วยกัน ดังนี้

  • Boolean types 
    bool
  • Number types
    uint8, uint16, uint32, uint64, int8, int16, int32, int64, float32, float64, complex64, complex128, byte, rune
  • String types
    string
  • Array types
    [SIZE]T
  • Slice types
    []T
  • Struct types
    struct { 
     FieldName1 T1 
     FieldName2 T2
     … 
    }
  • Pointer types
    *T
  • Function types
    func (T1, T2, …) (T1, T2, …)
  • Interface types
    interface {
     MethodName1(T1, T2, …) (T1, T2, …) 
     MethodName2(T1, T2, …) (T1, T2, …)
    }
  • Map types
    map[K]V
  • Channel types
    chan T, <-chan T, chan<- T

Type ในกลุ่ม Boolean, Number และ String นั้นตัวภาษาจะกำหนดชื่อ Type พื้นฐานมาให้เลย ตามที่ผมลิสต์ไว้ในอีกบรรทัดของแต่ละกลุ่ม

ส่วน Type อื่นๆ จะเป็นลักษณะ Type ที่มีโครงสร้างโดยการเอา Type อื่นมาประกอบ

ทั้งหมดนี่คือ ข้อมูล ที่ Go สร้างได้ครับ

สำหรับใครที่เขียน Go มาบ้างอาจจะเถียงว่า เราสร้าง Type ใหม่เองได้นะ จาก Type พวกนี้ ใช่ keyword type ยังไงล่ะ แบบนี้

type Num int

type User struct {
Username string
Password string
}

ใช่ครับ ประเด็นอยู่ตรงที่ว่า Go เราสร้าง type เองได้จาก type ที่มีอยู่แล้ว แต่ ข้อมูล จริงๆ มีแค่ 11 แบบด้านบนนั้นเลยครับ สิ่งที่ต่างคือ การประกาศ type ใหม่โดยที่เราตั้งชื่อเองนั้น เราสามารถกำหนด Methods ให้กับ type ได้ครับ ส่วนการกำหนดข้อมูลให้กับ Type ใหม่ของเรา จริงๆแล้วเราใช้แค่ข้อมูลแบบเดียวกันกับ type เดิมที่เราตั้งชื่อให้มันนั่นเองครับ เช่น

type Num int
var i int = 10
var j Num = Num(j)

ซึ่งอาจจะต้องใช้ Type Cast แบบด้านบนช่วยแค่นั้นเอง

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.