====== Golang Type System Overview ====== This page explains the main categories of types in Go, their purpose, and when to use them. ===== 1. Basic Types ===== Basic types are primitive data types provided by the Go language. ==== Examples ==== int float64 bool string ==== Explanation ==== Basic types store simple values such as numbers, booleans, and text. int: stores whole numbers float64: stores decimal numbers bool: stores true or false string: stores text (UTF-8 encoded) ==== Notes ==== Primitive /ˈprɪmɪtɪv/: basic built-in data type UTF-8 /ˌjuːtiːɛf ˈeɪt/: variable-length text encoding ===== 2. Alias Types ===== Alias types are alternative names for existing types. ==== Examples ==== byte (alias of uint8) rune (alias of int32) ==== Explanation ==== Alias types do not create new types. They exist to improve code readability and express developer intent. byte: used for raw or binary data rune: used for Unicode characters ==== Notes ==== Alias /ˈeɪliəs/: another name for the same type Unicode /ˈjuːnɪˌkoʊd/: universal character standard ===== 3. Composite Types ===== Composite types are built from multiple values. ==== Examples ==== array slice map struct ==== Explanation ==== Composite types allow grouping and organizing data. Array: fixed-size collection of elements Slice: dynamic view over an array Map: key-value data structure Struct: collection of named fields ==== Notes ==== Composite /kəmˈpɒzɪt/: made from multiple parts Dynamic /daɪˈnæmɪk/: size can change ===== 4. Reference Types ===== Reference types store memory addresses instead of values. ==== Examples ==== pointer ==== Explanation ==== Pointers allow functions to: Modify values outside their scope Avoid copying large data structures Pointers use the * and & operators. ==== Notes ==== Pointer /ˈpɔɪntər/: variable holding a memory address Memory address /ˈmɛməri əˈdrɛs/: location in memory ===== 5. Behavior Types ===== Behavior types define what an object can do, not what it is. ==== Examples ==== function interface ==== Explanation ==== Function: executable block of code Interface: defines a set of method signatures Interfaces are implemented implicitly in Go. ==== Notes ==== Behavior /bɪˈheɪvjər/: actions or capabilities Implicit /ɪmˈplɪsɪt/: not explicitly declared ===== 6. Concurrency Types ===== Concurrency types support parallel execution. ==== Examples ==== channel ==== Explanation ==== Channels enable safe communication between goroutines. They can be: Unbuffered Buffered Channels help prevent race conditions. ==== Notes ==== Concurrency /kənˈkʌrənsi/: multiple tasks at the same time Race condition /reɪs kənˈdɪʃən/: unsafe concurrent access ===== 7. Error Type ===== The error type is a built-in interface for error handling. ==== Examples ==== error ==== Explanation ==== Errors represent failure states and are returned explicitly from functions. Go encourages explicit error handling instead of exceptions. ==== Notes ==== Explicit /ɪkˈsplɪsɪt/: clearly stated Exception /ɪkˈsɛpʃən/: error handling mechanism not used in Go ===== Summary ===== Category Purpose Basic Store simple values Alias Improve readability Composite Group data Reference Share memory Behavior Define actions Concurrency Enable parallelism Error Handle failures