Home > Backend Development > Golang > Let's talk about different ways to save data using Golang

Let's talk about different ways to save data using Golang

PHPz
Release: 2023-04-03 10:19:44
Original
971 people have browsed it

With the increasing popularity of Go language, many developers use Golang for development in projects. One of the important questions is how to save the data. In this post, we will discuss different ways to save data using Golang.

  1. Using JSON

JSON is a lightweight format for data exchange. In Golang, we can use the encoding/json package to encode data from a structure into JSON formatted data. We can also use the json.Unmarshal() method to decode JSON into a Go structure.

For example, let's create a struct and encode it to JSON:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    person := Person{Name: "Jack", Age: 25}

    jsonPerson, _ := json.Marshal(person)

    fmt.Println(string(jsonPerson))
}
Copy after login

Output:

{"name":"Jack","age":25}
Copy after login

We can also use json.Unmarshal()Method to decode JSON into a structure:

jsonString := `{"name":"Jack","age":25}`

person := Person{}
json.Unmarshal([]byte(jsonString), &person)

fmt.Printf("Name: %s, Age: %d", person.Name, person.Age)
Copy after login

Output:

Name: Jack, Age: 25
Copy after login
  1. Using SQL database

There is a ## in Golang’s standard library #database/sql package, which can be used to access SQL databases. We can use this package to save and retrieve data.

For example, we can connect to the MySQL database and save a person's data:

db, _ := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database")
defer db.Close()

sqlInsert := `INSERT INTO people (name, age) VALUES (?, ?)`
stmt, _ := db.Prepare(sqlInsert)
defer stmt.Close()

res, _ := stmt.Exec("Jack", 25)
id, _ := res.LastInsertId()

fmt.Println("Inserted a new person with ID:", id)
Copy after login
The above code adds a person's data to the MySQL database.

We can also use the

database/sql package to retrieve data. Here is an example of retrieving data from the database:

rows, _ := db.Query("SELECT * FROM people")

var name string
var age int

for rows.Next() {
    rows.Scan(&id, &name, &age)

    fmt.Printf("ID: %d, Name: %s, Age: %d\n", id, name, age)
}
Copy after login
The above code will retrieve everyone's data and print it on the console.

    Using NoSQL databases
Unlike SQL databases, NoSQL databases are more suitable for unstructured data. One of the most popular NoSQL databases in Golang is MongoDB. We can use the

mgo package to connect to MongoDB and save and retrieve data.

The following is an example of saving a person's data to MongoDB:

session, _ := mgo.Dial("mongodb://localhost:27017")
defer session.Close()

c := session.DB("mydb").C("people")

err := c.Insert(&Person{Name: "Jack", Age: 25})
if err != nil {
    log.Fatal(err)
}
Copy after login
The above code adds a person's data to the MongoDB database.

The following is an example of retrieving data from MongoDB:

results := []Person{}
err := c.Find(bson.M{}).All(&results)
if err != nil {
    log.Fatal(err)
}

for _, person := range results {
    fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age)
}
Copy after login
The above code will retrieve everyone's data and print it on the console.

Summary

This article introduces different ways to save data in Golang using different methods, including using JSON, SQL databases and NoSQL databases. Each of these methods has different advantages and use cases. Developers should choose the mode for data preservation that best suits their project needs.

The above is the detailed content of Let's talk about different ways to save data using Golang. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template