Mari kita bincangkan tentang cara yang berbeza untuk menyimpan data menggunakan Golang

PHPz
Lepaskan: 2023-04-03 10:19:44
asal
949 orang telah melayarinya

Dengan peningkatan populariti bahasa Go, ramai pembangun menggunakan Golang untuk pembangunan dalam projek. Salah satu soalan penting ialah bagaimana untuk menyimpan data. Dalam siaran ini, kita akan membincangkan cara yang berbeza untuk menyimpan data menggunakan Golang.

  1. Menggunakan JSON

JSON ialah format ringan untuk pertukaran data. Di Golang, kita boleh menggunakan pakej encoding/json untuk mengekod data daripada struktur ke dalam data berformat JSON. Kami juga boleh menggunakan kaedah json.Unmarshal() untuk menyahkod JSON ke dalam struktur Go.

Sebagai contoh, mari buat struct dan kodkannya ke 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))
}
Salin selepas log masuk

Output:

{"name":"Jack","age":25}
Salin selepas log masuk

Kita juga boleh menggunakan kaedah json.Unmarshal() untuk JSON dinyahkodkan kepada struktur:

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

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

fmt.Printf("Name: %s, Age: %d", person.Name, person.Age)
Salin selepas log masuk

Output:

Name: Jack, Age: 25
Salin selepas log masuk
  1. Menggunakan pangkalan data SQL

Pustaka standard Golang mempunyai database/sqlPakej yang boleh digunakan untuk mengakses pangkalan data SQL. Kita boleh menggunakan pakej ini untuk menyimpan dan mendapatkan semula data.

Sebagai contoh, kita boleh menyambung ke pangkalan data MySQL dan menyimpan data seseorang:

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)
Salin selepas log masuk

Kod di atas menambah data seseorang ke pangkalan data MySQL.

Kami juga boleh menggunakan pakej database/sql untuk mendapatkan semula data. Berikut ialah contoh mendapatkan semula data daripada pangkalan data:

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)
}
Salin selepas log masuk

Kod di atas akan mendapatkan semula data semua orang dan mencetaknya pada konsol.

  1. Gunakan pangkalan data NoSQL

Tidak seperti pangkalan data SQL, pangkalan data NoSQL lebih sesuai untuk data tidak berstruktur. Salah satu pangkalan data NoSQL yang paling popular di Golang ialah MongoDB. Kami boleh menggunakan pakej mgo untuk menyambung ke MongoDB dan menyimpan serta mendapatkan data.

Berikut ialah contoh menyimpan data seseorang ke 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)
}
Salin selepas log masuk

Kod di atas menambahkan data seseorang ke pangkalan data MongoDB.

Berikut ialah contoh mendapatkan semula data daripada 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)
}
Salin selepas log masuk

Kod di atas akan mendapatkan semula data semua orang dan mencetaknya pada konsol.

Ringkasan

Artikel ini memperkenalkan cara yang berbeza untuk menyimpan data di Golang menggunakan kaedah yang berbeza, termasuk menggunakan pangkalan data JSON, SQL dan pangkalan data NoSQL. Setiap kaedah ini mempunyai kelebihan dan kes penggunaan yang berbeza. Pembangun harus memilih mod untuk pemeliharaan data yang paling sesuai dengan keperluan projek mereka.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara yang berbeza untuk menyimpan data menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!