Golang Composition เป็นวิธีการสร้างโครงสร้างของโปรแกรมโดยการใช้โครงสร้างของแต่ละอ็อบเจกต์ (Object) โดยไม่ได้สืบทอดคุณสมบัติ (Inheritance) จากคลาสหรือโครงสร้างอื่น ๆ เช่นในภาษา Java หรือ C++

การใช้ Composition ใน Golang นั้นเรียกว่า Embedded Types ซึ่งจะเป็นการประกาศชนิดของออบเจกต์ภายในโครงสร้างอื่น ๆ โดยที่ไม่ต้องกำหนดค่าคุณสมบัติอย่างชัดเจน เพื่อให้โครงสร้างที่เราสร้างขึ้นมีคุณสมบัติและฟังก์ชันการทำงานตามที่ต้องการ

ตัวอย่างการใช้ Composition ใน Golang สามารถแสดงได้ดังนี้

type Person struct {
    name string
    age  int
}

type Employee struct {
    person Person
    id     int
}

ในตัวอย่างข้างต้น โครงสร้างของ Employee จะประกอบไปด้วย Person และ id โดย Person จะเป็นส่วนประกอบของ Employee ที่เกี่ยวข้องกับชื่อและอายุของพนักงาน ซึ่งจะช่วยให้เราสามารถใช้งาน Person ได้เหมือนกับตัวแปรของ struct ใหม่ที่เราสร้างขึ้นมาใน Employee ได้โดยตรง