最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言使用SQLite實現(xiàn)本地存儲的示例詳解

 更新時間:2025年08月22日 09:50:53   作者:程序員愛釣魚  
在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做本地存儲,本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例,希望對大家有所幫助

在開發(fā)工具類軟件、桌面應(yīng)用或者移動端時,我們經(jīng)常需要一個輕量級數(shù)據(jù)庫來做 本地存儲。相比 MySQL、Postgres 等服務(wù)型數(shù)據(jù)庫,SQLite 體積小、零配置、單文件存儲,非常適合這種場景。

Go 語言通過 GORM + SQLite 驅(qū)動 就能輕松實現(xiàn)。本文將帶你一步步用 Go 搭建一個 SQLite 本地存儲的示例。

一、環(huán)境準(zhǔn)備

安裝依賴庫:

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

二、定義模型

我們以一個 Note 記事本模型為例:

package main

import (
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
    "log"
)

// Note 記事本模型
type Note struct {
    ID      uint   `gorm:"primaryKey"`
    Title   string `gorm:"size:100"`
    Content string
}

var db *gorm.DB

func initDB() {
    var err error
    // 創(chuàng)建/連接 SQLite 文件數(shù)據(jù)庫
    db, err = gorm.Open(sqlite.Open("notes.db"), &gorm.Config{})
    if err != nil {
        log.Fatal("數(shù)據(jù)庫連接失敗:", err)
    }

    // 自動遷移
    _ = db.AutoMigrate(&Note{})
}

運行后,會在當(dāng)前目錄下生成一個 notes.db 文件,里面存儲了表結(jié)構(gòu)和數(shù)據(jù)。

三、實現(xiàn)基本的本地存儲操作

1. 新增數(shù)據(jù)

func createNote(title, content string) {
    note := Note{Title: title, Content: content}
    db.Create(&note)
    log.Println("新增筆記成功:", note)
}

2. 查詢數(shù)據(jù)

func getNotes() {
    var notes []Note
    db.Find(&notes)
    log.Println("所有筆記:", notes)
}

3. 更新數(shù)據(jù)

func updateNote(id uint, newContent string) {
    db.Model(&Note{}).Where("id = ?", id).Update("content", newContent)
    log.Println("更新筆記成功, ID:", id)
}

4. 刪除數(shù)據(jù)

func deleteNote(id uint) {
    db.Delete(&Note{}, id)
    log.Println("刪除筆記成功, ID:", id)
}

四、測試本地存儲

func main() {
    initDB()

    // 新增兩條筆記
    createNote("Go 學(xué)習(xí)計劃", "每天刷 1 個實戰(zhàn)案例")
    createNote("購物清單", "牛奶、面包、雞蛋")

    // 查詢
    getNotes()

    // 更新
    updateNote(1, "每天刷 2 個實戰(zhàn)案例")
    getNotes()

    // 刪除
    deleteNote(2)
    getNotes()
}

五、運行效果

首次運行,會生成 notes.db 文件。SQLite 可以用 命令行工具或第三方軟件(如 DB Browser for SQLite)  打開查看。

程序日志:

新增筆記成功: {1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例}
新增筆記成功: {2 購物清單 牛奶、面包、雞蛋}
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 1 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
更新筆記成功, ID: 1
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例} {2 購物清單 牛奶、面包、雞蛋}]
刪除筆記成功, ID: 2
所有筆記: [{1 Go 學(xué)習(xí)計劃 每天刷 2 個實戰(zhàn)案例}]

六、總結(jié)

通過本案例,我們實現(xiàn)了:

  • 使用 GORM + SQLite 搭建 本地存儲數(shù)據(jù)庫
  • 自動遷移模型(建表)
  • 實現(xiàn)了 CRUD 操作(增刪改查)
  • 數(shù)據(jù)存儲在單個 notes.db 文件中,方便移植與備份

SQLite 非常適合:

  • 桌面應(yīng)用:比如記事本、數(shù)據(jù)分析工具
  • 移動應(yīng)用:本地緩存、用戶數(shù)據(jù)存儲
  • 輕量級服務(wù):不需要 MySQL/Postgres 的完整環(huán)境

到此這篇關(guān)于Go語言使用SQLite實現(xiàn)本地存儲的示例詳解的文章就介紹到這了,更多相關(guān)Go SQLite本地存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang接口的定義與空接口及斷言的使用示例

    Golang接口的定義與空接口及斷言的使用示例

    在?Golang?中,接口是一種類型,它是由一組方法簽名組成的抽象集合。這篇文章主要為大家介紹了Golang接口的具體使用,希望對大家有所幫助,空接口是特殊形式的接口類型,普通的接口都有方法,而空接口沒有定義任何方法口,也因此,我們可以說所有類型都至少實現(xiàn)了空接口
    2023-04-04
  • 詳解以go思想去處理js異常拋棄trycatch

    詳解以go思想去處理js異常拋棄trycatch

    這篇文章主要為大家介紹了詳解以go思想去處理js異常拋棄trycatch,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • win10下go mod配置方式

    win10下go mod配置方式

    這篇文章主要介紹了win10下go mod配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 解決Golang time.Parse和time.Format的時區(qū)問題

    解決Golang time.Parse和time.Format的時區(qū)問題

    這篇文章主要介紹了解決Golang time.Parse和time.Format的時區(qū)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言中OCR常用識別庫的使用與實戰(zhàn)指南

    Go語言中OCR常用識別庫的使用與實戰(zhàn)指南

    Go 生態(tài)里沒有像 Python 那樣大量直接內(nèi)置 OCR 模型的庫,但可以通過調(diào)用成熟 OCR 引擎(Tesseract)、用 OpenCV 做預(yù)處理、或接入云 OCR 服務(wù)來構(gòu)建穩(wěn)定的 OCR 流水線,本文把常見方案、優(yōu)缺點、實戰(zhàn)代碼與工程級建議都列出來,需要的可以了解下
    2025-11-11
  • golang中strconv.ParseInt函數(shù)用法示例

    golang中strconv.ParseInt函數(shù)用法示例

    這篇文章主要介紹了golang中strconv.ParseInt函數(shù)用法,實例分析了strconv.ParseInt函數(shù)將字符串轉(zhuǎn)換為數(shù)字的簡單使用方法,需要的朋友可以參考下
    2016-07-07
  • Go字典使用詳解

    Go字典使用詳解

    今天和大家一起學(xué)習(xí)Go語言的字典。Go語言的字典又稱為map,一種使用廣泛的數(shù)據(jù)結(jié)構(gòu)。它是擁有key/value對元素的「無序集合」,而且在集合中key必須是唯一的
    2022-11-11
  • Go uuid庫的具體使用

    Go uuid庫的具體使用

    在現(xiàn)代軟件開發(fā)中,全球唯一標(biāo)識符(UUID)在許多場景中發(fā)揮著重要的作用,本文主要介紹了Go uuid庫的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 最新評論

    浪卡子县| 建平县| 潜江市| 玉溪市| 南木林县| 叶城县| 娄底市| 清苑县| 文昌市| 鄂托克旗| 宝鸡市| 辽阳市| 昆明市| 乌拉特中旗| 南岸区| 青浦区| 新郑市| 环江| 宣城市| 巴青县| 林甸县| 盈江县| 运城市| 海宁市| 台前县| 遂溪县| 自治县| 策勒县| 阜城县| 东阳市| 石城县| 建始县| 清新县| 丹江口市| 四川省| 陇川县| 沙坪坝区| 临桂县| 乐平市| 益阳市| 河南省|