go包获取【我的go学习第九课】

简介: go包获取【我的go学习第九课】

1.获取远程包


go 语言有一个获取远程包的工具就是 go get,目前 go get 支持多数开源社区 (例如:github、googlecode、bitbucket、Launchpad)

例如:

go get github.com/astaxie/beedb

在pkg目录下tree /f可查看到安装的包如下所示:

└─windows_amd64
    │  mymath.a
    └─github.com
        └─astaxie
                beedb.a


2.应用


如下代码所示,可以应用远程下载的go第三方库文件,连接sqllite。

链接地址:beedb/sqlite.go at master · astaxie/beedb · GitHub

package main
import (
  "fmt"
  "github.com/astaxie/beedb"
  _ "github.com/mattn/go-sqlite3"
  "time"
  "database/sql"
)
/*
CREATE TABLE `userinfo` (
  `uid` INTEGER PRIMARY KEY AUTOINCREMENT,
  `username` VARCHAR(64) NULL,
  `departname` VARCHAR(64) NULL,
  `created` DATE NULL
);
CREATE TABLE `userdeatail` (
  `uid` INT(10) NULL,
  `intro` TEXT NULL,
  `profile` TEXT NULL,
  PRIMARY KEY (`uid`)
);
*/
var orm beedb.Model
type Userinfo struct {
  Uid        int `beedb:"PK"`
  Username   string
  Departname string
  Created    string
}
func main() {
  db, err := sql.Open("sqlite3", "./asta.db")
  if err != nil {
    panic(err)
  }
  orm = beedb.New(db)
  //insert()
  //insertsql()
  // a := selectone()
  // fmt.Println(a)
  // b := selectall()
  // fmt.Println(b)
  // update()
  // updatesql()
  // findmap()
  // groupby()
  // jointable()
  // delete()
  //deletesql()
  //deleteall()
}
func insert() {
  //save data
  var saveone Userinfo
  saveone.Username = "Test Add User"
  saveone.Departname = "Test Add Departname"
  saveone.Created = time.Now().Format("2006-01-02 15:04:05")
  orm.Save(&saveone)
  fmt.Println(saveone)
}
func insertsql() {
  // add one
  add := make(map[string]interface{})
  add["username"] = "astaxie"
  add["departname"] = "cloud develop"
  add["created"] = "2012-12-02"
  orm.SetTable("userinfo").Insert(add)
}
func selectone() Userinfo {
  //get one info
  var one Userinfo
  orm.Where("uid=?", 1).Find(&one)
  return one
}
func selectall() []Userinfo {
  //get all data
  var alluser []Userinfo
  orm.Limit(10).Where("uid>?", 1).FindAll(&alluser)
  return alluser
}
func update() {
  // //update data
  var saveone Userinfo
  saveone.Uid = 1
  saveone.Username = "Update Username"
  saveone.Departname = "Update Departname"
  saveone.Created = time.Now().Format("2006-01-02 15:04:05")
  orm.Save(&saveone)
  fmt.Println(saveone)
}
func updatesql() {
  //original SQL update 
  t := make(map[string]interface{})
  t["username"] = "updateastaxie"
  //update one
  orm.SetTable("userinfo").SetPK("uid").Where(2).Update(t)
  //update batch
  orm.SetTable("userinfo").Where("uid>?", 3).Update(t)
}
func findmap() {
  //Original SQL Backinfo resultsSlice []map[string][]byte 
  //default PrimaryKey id
  c, _ := orm.SetTable("userinfo").SetPK("uid").Where(2).Select("uid,username").FindMap()
  fmt.Println(c)
}
func groupby() {
  //Original SQL Group By 
  b, _ := orm.SetTable("userinfo").GroupBy("username").Having("username='updateastaxie'").FindMap()
  fmt.Println(b)
}
func jointable() {
  //Original SQL Join Table
  a, _ := orm.SetTable("userinfo").Join("LEFT", "userdeatail", "userinfo.uid=userdeatail.uid").Where("userinfo.uid=?", 1).Select("userinfo.uid,userinfo.username,userdeatail.profile").FindMap()
  fmt.Println(a)
}
func delete() {
  // // //delete one data
  saveone := selectone()
  orm.Delete(&saveone)
}
func deletesql() {
  //original SQL delete
  orm.SetTable("userinfo").Where("uid>?", 2).DeleteRow()
}
func deleteall() {
  // //delete all data
  alluser := selectall()
  orm.DeleteAll(&alluser)
}


目录
相关文章
|
1月前
|
程序员 Go 云计算
2023年学习Go语言是否值得?探索Go语言的魅力
2023年学习Go语言是否值得?探索Go语言的魅力
|
1月前
|
缓存 NoSQL Go
通过 SingleFlight 模式学习 Go 并发编程
通过 SingleFlight 模式学习 Go 并发编程
|
17天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
24天前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
30 3
|
1月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
1月前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
1月前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
1月前
|
Go
Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法
Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法
46 12
|
1月前
|
编译器 数据库连接 Go
Go Sync 包:并发的 6 个关键概念
Go Sync 包:并发的 6 个关键概念
|
26天前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习