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)
}


目录
相关文章
|
3月前
|
程序员 Go 云计算
2023年学习Go语言是否值得?探索Go语言的魅力
2023年学习Go语言是否值得?探索Go语言的魅力
|
3月前
|
缓存 NoSQL Go
通过 SingleFlight 模式学习 Go 并发编程
通过 SingleFlight 模式学习 Go 并发编程
|
6天前
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
23 7
|
8天前
|
编译器 Go 开发者
go语言中导入相关包
【11月更文挑战第1天】
19 3
|
16天前
|
设计模式 测试技术 Go
学习Go语言
【10月更文挑战第25天】学习Go语言
19 4
|
28天前
|
存储 Go 数据库
Go语言Context包源码学习
【10月更文挑战第21天】Go 语言中的 `context` 包用于在函数调用链中传递请求上下文信息,支持请求的取消、超时和截止时间管理。其核心接口 `Context` 定义了 `Deadline`、`Done`、`Err` 和 `Value` 方法,分别用于处理截止时间、取消信号、错误信息和键值对数据。包内提供了 `emptyCtx`、`cancelCtx`、`timerCtx` 和 `valueCtx` 四种实现类型,满足不同场景需求。示例代码展示了如何使用带有超时功能的上下文进行任务管理和取消。
|
2月前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
2月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
46 3
|
3月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
130 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
3月前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID