{"id":2520,"date":"2023-06-25T07:32:08","date_gmt":"2023-06-25T07:32:08","guid":{"rendered":"https:\/\/codeinsightacademy.com\/blog\/?p=2520"},"modified":"2023-06-25T08:03:22","modified_gmt":"2023-06-25T08:03:22","slug":"go-lang-crash-course","status":"publish","type":"post","link":"https:\/\/codeinsightacademy.com\/blog\/go\/go-lang-crash-course\/","title":{"rendered":"Go Lang Crash Course"},"content":{"rendered":"\n<h2 class=\"has-text-align-center\">Basics of Go<\/h2>\n\n\n\n<ul><li>Variables and Constants:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    var message string = \"Hello, Go!\"\n    fmt.Println(message)\n\n    const pi = 3.14159\n    fmt.Println(pi)\n}<\/pre>\n\n\n\n<ul><li>Data Types and Type Conversion:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    var age int = 25\n    fmt.Println(age)\n\n    var price float64 = 9.99\n    fmt.Println(price)\n\n    var isTrue bool = true\n    fmt.Println(isTrue)\n\n    var name string = \"John\"\n    fmt.Println(name)\n\n    \/\/ Type conversion\n    var num int = 42\n    var result float64 = float64(num)\n    fmt.Println(result)\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Operators<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    var a = 10\n    var b = 5\n\n    fmt.Println(a + b)\n    fmt.Println(a - b)\n    fmt.Println(a * b)\n    fmt.Println(a \/ b)\n    fmt.Println(a % b)\n\n    var isTrue = true\n    fmt.Println(!isTrue)\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Control Structures: if-else and switch:<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    var num = 5\n\n    if num > 0 {\n        fmt.Println(\"Number is positive\")\n    } else if num &lt; 0 {\n        fmt.Println(\"Number is negative\")\n    } else {\n        fmt.Println(\"Number is zero\")\n    }\n\n    var day = \"Monday\"\n\n    switch day {\n    case \"Monday\":\n        fmt.Println(\"It's Monday\")\n    case \"Tuesday\":\n        fmt.Println(\"It's Tuesday\")\n    default:\n        fmt.Println(\"It's another day\")\n    }\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Loops: for and range<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    \/\/ For loop\n    for i := 1; i &lt;= 5; i++ {\n        fmt.Println(i)\n    }\n\n    \/\/ Range loop\n    nums := []int{1, 2, 3, 4, 5}\n    for index, value := range nums {\n        fmt.Println(index, value)\n    }\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Functions in Go<\/h2>\n\n\n\n<ul><li>Simple Function:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc add(a, b int) int {\n    return a + b\n}\n\nfunc main() {\n    result := add(3, 5)\n    fmt.Println(result)\n}<\/pre>\n\n\n\n<ul><li>Function with Multiple Return Values:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc divide(a, b int) (int, int) {\n    quotient := a \/ b\n    remainder := a % b\n    return quotient, remainder\n}\n\nfunc main() {\n    q, r := divide(10, 3)\n    fmt.Println(\"Quotient:\", q)\n    fmt.Println(\"Remainder:\", r)\n}<\/pre>\n\n\n\n<ul><li>Variadic Function:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc sum(numbers ...int) int {\n    total := 0\n    for _, num := range numbers {\n        total += num\n    }\n    return total\n}\n\nfunc main() {\n    result := sum(1, 2, 3, 4, 5)\n    fmt.Println(result)\n}<\/pre>\n\n\n\n<ul><li>Anonymous Functions and Closures:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    add := func(a, b int) int {\n        return a + b\n\n\n }\n\n    result := add(3, 5)\n    fmt.Println(result)\n}<\/pre>\n\n\n\n<ul><li>Recursion:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc factorial(n int) int {\n    if n == 0 {\n        return 1\n    }\n    return n * factorial(n-1)\n}\n\nfunc main() {\n    result := factorial(5)\n    fmt.Println(result)\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Arrays, Slices, and Maps in Go<\/h2>\n\n\n\n<ul><li>Arrays:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    var numbers [5]int\n    numbers[0] = 1\n    numbers[1] = 2\n    numbers[2] = 3\n    numbers[3] = 4\n    numbers[4] = 5\n    fmt.Println(numbers)\n\n    var matrix [3][3]int\n    matrix[0] = [3]int{1, 2, 3}\n    matrix[1] = [3]int{4, 5, 6}\n    matrix[2] = [3]int{7, 8, 9}\n    fmt.Println(matrix)\n}<\/pre>\n\n\n\n<ul><li>Slices:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    numbers := []int{1, 2, 3, 4, 5}\n    fmt.Println(numbers)\n\n    fmt.Println(numbers[1:4]) \/\/ Slicing a slice\n\n    numbers = append(numbers, 6) \/\/ Appending an element\n    fmt.Println(numbers)\n\n    numbers = append(numbers[:2], numbers[3:]...) \/\/ Removing an element\n    fmt.Println(numbers)\n}<\/pre>\n\n\n\n<ul><li>Maps:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    person := map[string]string{\n        \"name\":  \"John\",\n        \"age\":   \"30\",\n        \"email\": \"john@example.com\",\n    }\n    fmt.Println(person)\n\n    fmt.Println(person[\"name\"])\n\n    person[\"city\"] = \"New York\" \/\/ Adding a new key-value pair\n    fmt.Println(person)\n\n    delete(person, \"age\") \/\/ Removing a key-value pair\n    fmt.Println(person)\n}<\/pre>\n\n\n\n<ul><li>Iterating over Slices and Maps:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    numbers := []int{1, 2, 3, 4, 5}\n    for index, value := range numbers {\n        fmt.Println(index, value)\n    }\n\n    person := map[string]string{\n        \"name\":  \"John\",\n        \"age\":   \"30\",\n        \"email\": \"john@example.com\",\n    }\n    for key, value := range person {\n        fmt.Println(key, \":\", value)\n    }\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Structs and Methods in Go<\/h2>\n\n\n\n<ul><li>Structs:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\ntype Person struct {\n    name    string\n    age     int\n    address string\n}\n\nfunc main() {\n    person := Person{\"John\", 30, \"New York\"}\n    fmt.Println(person)\n\n    fmt.Println(person.name)\n    fmt.Println(person.age)\n    fmt.Println(person.address)\n}<\/pre>\n\n\n\n<ul><li>Methods:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"fmt\"\n\ntype Rectangle struct {\n    width  float64\n    height float64\n}\n\nfunc (r Rectangle) area() float64 {\n    return r.width * r.height\n}\n\nfunc main() {\n    rect := Rectangle{3.0, 4.0}\n    fmt.Println(rect.area())\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Packages and Error Handling in Go<\/h2>\n\n\n\n<ul><li>Packages:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"fmt\"\n    \"math\"\n)\n\nfunc main() {\n    fmt.Println(math\n\n.Sqrt(16))\n}<\/pre>\n\n\n\n<ul><li>Error Handling with <code>error<\/code> Type:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"fmt\"\n    \"math\"\n)\n\nfunc calculateSqrt(num float64) (float64, error) {\n    if num &lt; 0 {\n        return 0, fmt.Errorf(\"Cannot calculate square root of a negative number\")\n    }\n    return math.Sqrt(num), nil\n}\n\nfunc main() {\n    result, err := calculateSqrt(-9)\n    if err != nil {\n        fmt.Println(err)\n    } else {\n        fmt.Println(result)\n    }\n}<\/pre>\n\n\n\n<ul><li>Custom Error Types:<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"fmt\"\n    \"math\"\n)\n\ntype NegativeNumberError struct {\n    number float64\n}\n\nfunc (e NegativeNumberError) Error() string {\n    return fmt.Sprintf(\"Cannot calculate square root of a negative number: %f\", e.number)\n}\n\nfunc calculateSqrt(num float64) (float64, error) {\n    if num &lt; 0 {\n        return 0, NegativeNumberError{num}\n    }\n    return math.Sqrt(num), nil\n}\n\nfunc main() {\n    result, err := calculateSqrt(-9)\n    if err != nil {\n        fmt.Println(err)\n    } else {\n        fmt.Println(result)\n    }\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Database Connection<\/h2>\n\n\n\n<ol><li>Installing and Importing Dependencies:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"database\/sql\"\n    \"fmt\"\n\n    _ \"github.com\/go-sql-driver\/mysql\"\n)<\/pre>\n\n\n\n<ol start=\"2\"><li>Establishing a Database Connection:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    \/\/ Database connection parameters\n    db, err := sql.Open(\"mysql\", \"username:password@tcp(localhost:3306)\/database_name\")\n    if err != nil {\n        panic(err)\n    }\n    defer db.Close()\n\n    \/\/ Check if the connection is successful\n    err = db.Ping()\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Println(\"Connected to the database!\")\n}<\/pre>\n\n\n\n<ol start=\"3\"><li>Creating the &#8220;users&#8221; Table:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    db, err := sql.Open(\"mysql\", \"username:password@tcp(localhost:3306)\/database_name\")\n    if err != nil {\n        panic(err)\n    }\n    defer db.Close()\n\n    createTableQuery := `\n        CREATE TABLE IF NOT EXISTS users (\n            id INT AUTO_INCREMENT PRIMARY KEY,\n            name VARCHAR(50) NOT NULL,\n            age INT,\n            city VARCHAR(50),\n            salary FLOAT,\n            added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n        );\n    `\n\n    _, err = db.Exec(createTableQuery)\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Println(\"Table 'users' created successfully!\")\n}<\/pre>\n\n\n\n<ol start=\"4\"><li>Inserting Data into the &#8220;users&#8221; Table:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    db, err := sql.Open(\"mysql\", \"username:password@tcp(localhost:3306)\/database_name\")\n    if err != nil {\n        panic(err)\n    }\n    defer db.Close()\n\n    insertQuery := `\n        INSERT INTO users (name, age, city, salary)\n        VALUES (?, ?, ?, ?);\n    `\n\n    result, err := db.Exec(insertQuery, \"John Doe\", 30, \"New York\", 5000.0)\n    if err != nil {\n        panic(err)\n    }\n\n    lastInsertID, err := result.LastInsertId()\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Println(\"Inserted record ID:\", lastInsertID)\n}<\/pre>\n\n\n\n<ol start=\"5\"><li>Querying Data from the &#8220;users&#8221; Table:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    db, err := sql.Open(\"mysql\", \"username:password@tcp(localhost:3306)\/database_name\")\n    if err != nil {\n        panic(err)\n    }\n    defer db.Close()\n\n    selectQuery := `\n        SELECT id, name, age, city, salary, added_at, updated_at\n        FROM users;\n    `\n\n    rows, err := db.Query(selectQuery)\n    if err != nil {\n        panic(err)\n    }\n    defer rows.Close()\n\n    for rows.Next() {\n        var id int\n        var name string\n        var age int\n        var city string\n        var salary float64\n        var addedAt string\n        var updatedAt string\n\n        err := rows.Scan(&amp;id, &amp;name, &amp;age, &amp;city, &amp;salary, &amp;addedAt, &amp;updatedAt)\n        if err != nil {\n            panic(err)\n        }\n\n        fmt.Println(\"ID:\", id)\n        fmt.Println(\"Name:\", name)\n        fmt.Println(\"Age:\", age)\n        fmt.Println(\"City:\", city)\n        fmt.Println(\"Salary:\", salary)\n        fmt.Println(\"Added At:\", addedAt)\n        fmt\n\n.Println(\"Updated At:\", updatedAt)\n        fmt.Println()\n    }\n}<\/pre>\n\n\n\n<h2 class=\"has-text-align-center\">Go and Gin Framework<\/h2>\n\n\n\n<ol><li>Retrieving All Users:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    router := gin.Default()\n\n    \/\/ ...\n\n    router.GET(\"\/users\", func(c *gin.Context) {\n        selectQuery := `\n            SELECT id, name, age, city, salary, added_at, updated_at\n            FROM users;\n        `\n\n        rows, err := db.Query(selectQuery)\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n        defer rows.Close()\n\n        users := []gin.H{}\n        for rows.Next() {\n            var id int\n            var name string\n            var age int\n            var city string\n            var salary float64\n            var addedAt string\n            var updatedAt string\n\n            err := rows.Scan(&amp;id, &amp;name, &amp;age, &amp;city, &amp;salary, &amp;addedAt, &amp;updatedAt)\n            if err != nil {\n                c.JSON(500, gin.H{\"error\": err.Error()})\n                return\n            }\n\n            user := gin.H{\n                \"id\":        id,\n                \"name\":      name,\n                \"age\":       age,\n                \"city\":      city,\n                \"salary\":    salary,\n                \"added_at\":  addedAt,\n                \"updated_at\": updatedAt,\n            }\n\n            users = append(users, user)\n        }\n\n        c.JSON(200, users)\n    })\n\n    \/\/ ...\n\n    router.Run(\":8080\")\n}<\/pre>\n\n\n\n<ol start=\"2\"><li>Deleting a User:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    router := gin.Default()\n\n    \/\/ ...\n\n    router.DELETE(\"\/users\/:id\", func(c *gin.Context) {\n        id := c.Param(\"id\")\n\n        deleteQuery := `\n            DELETE FROM users\n            WHERE id = ?;\n        `\n\n        result, err := db.Exec(deleteQuery, id)\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        rowsAffected, err := result.RowsAffected()\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        if rowsAffected == 0 {\n            c.JSON(404, gin.H{\"message\": fmt.Sprintf(\"User with ID %s not found\", id)})\n        } else {\n            c.JSON(200, gin.H{\"message\": fmt.Sprintf(\"User with ID %s deleted\", id)})\n        }\n    })\n\n    \/\/ ...\n\n    router.Run(\":8080\")\n}<\/pre>\n\n\n\n<ol start=\"3\"><li>Adding a New User:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    router := gin.Default()\n\n    \/\/ ...\n\n    router.POST(\"\/users\", func(c *gin.Context) {\n        var user struct {\n            Name   string  `json:\"name\"`\n            Age    int     `json:\"age\"`\n            City   string  `json:\"city\"`\n            Salary float64 `json:\"salary\"`\n        }\n\n        if err := c.ShouldBindJSON(&amp;user); err != nil {\n            c.JSON(400, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        insertQuery := `\n            INSERT INTO users (name, age, city, salary)\n            VALUES (?, ?, ?, ?);\n        `\n\n        result, err := db.Exec(insertQuery, user.Name, user.Age, user.City, user.Salary)\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        lastInsertID, err := result.LastInsertId()\n        if err != nil {\n            c\n\n.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        c.JSON(201, gin.H{\"message\": fmt.Sprintf(\"User created with ID %d\", lastInsertID)})\n    })\n\n    \/\/ ...\n\n    router.Run(\":8080\")\n}<\/pre>\n\n\n\n<ol start=\"4\"><li>Fetching a Single User:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    router := gin.Default()\n\n    \/\/ ...\n\n    router.GET(\"\/users\/:id\", func(c *gin.Context) {\n        id := c.Param(\"id\")\n\n        selectQuery := `\n            SELECT id, name, age, city, salary, added_at, updated_at\n            FROM users\n            WHERE id = ?;\n        `\n\n        row := db.QueryRow(selectQuery, id)\n\n        var user struct {\n            ID        int     `json:\"id\"`\n            Name      string  `json:\"name\"`\n            Age       int     `json:\"age\"`\n            City      string  `json:\"city\"`\n            Salary    float64 `json:\"salary\"`\n            AddedAt   string  `json:\"added_at\"`\n            UpdatedAt string  `json:\"updated_at\"`\n        }\n\n        err := row.Scan(&amp;user.ID, &amp;user.Name, &amp;user.Age, &amp;user.City, &amp;user.Salary, &amp;user.AddedAt, &amp;user.UpdatedAt)\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        c.JSON(200, user)\n    })\n\n    \/\/ ...\n\n    router.Run(\":8080\")\n}<\/pre>\n\n\n\n<ol start=\"5\"><li>Updating an Existing User:<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func main() {\n    router := gin.Default()\n\n    \/\/ ...\n\n    router.PUT(\"\/users\/:id\", func(c *gin.Context) {\n        id := c.Param(\"id\")\n\n        var user struct {\n            Name   string  `json:\"name\"`\n            Age    int     `json:\"age\"`\n            City   string  `json:\"city\"`\n            Salary float64 `json:\"salary\"`\n        }\n\n        if err := c.ShouldBindJSON(&amp;user); err != nil {\n            c.JSON(400, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        updateQuery := `\n            UPDATE users\n            SET name = ?, age = ?, city = ?, salary = ?\n            WHERE id = ?;\n        `\n\n        result, err := db.Exec(updateQuery, user.Name, user.Age, user.City, user.Salary, id)\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        rowsAffected, err := result.RowsAffected()\n        if err != nil {\n            c.JSON(500, gin.H{\"error\": err.Error()})\n            return\n        }\n\n        if rowsAffected == 0 {\n            c.JSON(404, gin.H{\"message\": fmt.Sprintf(\"User with ID %s not found\", id)})\n        } else {\n            c.JSON(200, gin.H{\"message\": fmt.Sprintf(\"User with ID %s updated\", id)})\n        }\n    })\n\n    \/\/ ...\n\n    router.Run(\":8080\")\n}<\/pre>\n\n\n\n<p>Please make sure to replace <code>\"username\"<\/code>, <code>\"password\"<\/code>, and <code>\"database_name\"<\/code> with your actual MySQL database credentials and database name.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Basics of Go Variables and Constants: Data Types and Type Conversion: Operators Control Structures: if-else and switch: Loops: for and range Functions in Go Simple Function: Function with Multiple Return Values: Variadic Function: Anonymous Functions and Closures: Recursion: Arrays, Slices, and Maps in Go Arrays: Slices: Maps: Iterating over Slices and Maps: Structs and Methods [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[36],"tags":[],"_links":{"self":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2520"}],"collection":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/comments?post=2520"}],"version-history":[{"count":10,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2520\/revisions"}],"predecessor-version":[{"id":2532,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/2520\/revisions\/2532"}],"wp:attachment":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/media?parent=2520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/categories?post=2520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/tags?post=2520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}