深入了解Golang包的获取方法

目录
  • 1.获取远程包
  • 2.应用

1.获取远程包

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

例如:

go get github.com/astaxie/beedb

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

2.应用

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

链接地址

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

到此这篇关于深入了解Golang包的获取方法的文章就介绍到这了,更多相关Golang包获取内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • golang 使用time包获取时间戳与日期格式化操作

    Time包定义的类型 Time: 时间类型, 包含了秒和纳秒以及 Location Month: type Month int 月份. 定义了十二个月的常量 const ( January Month = 1 + iota February March April May June July August September October November December ) Weekday 类型: type Weekday int 周 定义了一周的七天 const ( Sunday Wee

  • Go 的入口函数和包初始化的使用

    目录 包 package main.main 函数:Go 应用的入口函数 package main 注意 其他包也可以拥有 main 函数或方法 重点 引子 init 函数:Go 包的初始化函数 和 main 函数不一样 init 函数的执行顺序 Go 包的初始化次序 init 函数的特点 init 函数的用途 重置包级变量值 实现对包级变量的复杂初始化 在 init 函数中实现“注册模式” 实际原因 通过注册模式实现获取各种格式图片的宽.高 Go 源码 包 package Go 包是 Go 语

  • 如何在 Go语言中使用日志包

    目录 Go 语言标准库之log 包 如何将日志消息存储在 Go 中的文件中 定制你的日志记录器 总结 引言: 在我们的日常编程中,日志很重要.只要是我们写代码,就有可能出现 Bug.日志文件就是一种快速找到这些 bug,更好地了解程序工作状态的方法. 让我们来看一下日志文件的定义: 日志文件是记录操作系统或其他软件运行中发生的事件或通信软件的不同用户之间的消息的文件.记录是保存日志的行为. 日志是开发人员的眼睛和耳朵,可以用来跟踪.定位错误.调试和分析代码,并监控应用程序的性能.在最简单的情况下

  • Go container包的介绍

    目录 1.简介 2.list 2.1数据结构 2.2插入元素 3.ring 3.1数据结构 4.heap 4.1数据结构 1.简介 Container - 容器数据类型:该包实现了三个复杂的数据结构:堆.链表.环 List:Go中对链表的实现,其中List:双向链表,Element:链表中的元素 Ring:实现的是一个循环链表,也就是我们俗称的环 Heap:Go中对堆的实现 2.list 简单实用: func main() { // 初始化双向链表 l := list.New() // 链表头插

  • Golang导入包的几种方式(点,别名与下划线)

    目录 一.包的导入 二.包的不同导入方式 1.导入单个 2.导入多个包 3.特殊的导入方式 总结 一.包的导入 Golang 当导入多个包时,一般按照字母顺序排列包名称,像Goland 等IDE 会在保存文件时自动完成这个动作.Golang 导入包即等同于包含了这个包的所有的代码对象.为避免名称冲突,同一包中所有对象的标识符必须要求唯一.但是相同的标识符可以在不同的包中使用,因为可以使用包名来区分它们. 二.包的不同导入方式 1.导入单个 代码如下(示例): package main impor

  • Go语言七篇入门教程五文件及包

    目录 1. 文件处理 1.1 JSON文件 1.1.1 已知JSON结构 1.1.2 未知JSON结构 1.1.3 Encoder & Decoder 1.2 XML文件 1.3 二进制文件 1.4 zip文件 1.4.1 创建zip 1.4.2 读取zip文件 2. 包管理 2.1 包路径 2.2 包声明 如何学习Go 1. 文件处理 1.1 JSON文件 什么是json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 也是在web开发中的前后

  • 深入了解Golang包的获取方法

    目录 1.获取远程包 2.应用 1.获取远程包 go 语言有一个获取远程包的工具就是 go get,目前 go get 支持多数开源社区 (例如:github.googlecode.bitbucket.Launchpad) 例如: go get github.com/astaxie/beedb 在pkg目录下tree /f可查看到安装的包如下所示: 2.应用 如下代码所示,可以应用远程下载的go第三方库文件,连接sqllite. 链接地址 package main import ( "fmt&q

  • Golang开发命令行之flag包的使用方法

    目录 1.命令行工具概述 2.flag包介绍 3.flag包命令行参数的定义 4.flag包命令行参数解析 5.flag包命令行帮助 6.flag定义短参数和长参数 7.示例 1.命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本. 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能够使开发人员更加专注于工作,提高效率,因为键盘操作模式更容易产生肌肉记忆 举个栗子:我司业务

  • php获取apk包信息的方法

    有时候在使用php上传安卓apk包的时候,我们需要获取安卓apk包内的信息,本文以实例形式讲述了php获取apk包信息的方法.具体实现方法如下: <?php /*解析安卓apk包中的压缩XML文件,还原和读取XML内容 依赖功能:需要PHP的ZIP包函数支持.*/ include('./Apkparser.php'); $appObj = new Apkparser(); $targetFile = a.apk;//apk所在的路径地址 $res = $appObj->open($target

  • golang包快速生成base64验证码的方法

    base64Captcha快速生成base64编码图片验证码字符串 支持多种样式,算术,数字,字母,混合模式,语音模式. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.Base64编码可用于在HTTP环境下传递较长的标识信息, 直接把base64当成是字符串方式的数据就好了 减少了http请求:数据就是图片: 为APIs微服务而设计 为什么base64图片 for RESTful 服务 Data URIs 支持大部分浏览器,IE8之后也支持. 小图片使用base64响应对于

  • go语言中sort包的实现方法与应用详解

    前言 Go语言的 sort 包实现了内置和用户定义类型的排序,sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,这三种方式都是不公开的,他们只在sort包内部使用.所以用户在使用sort包进行排序时无需考虑使用那种排序方式,sort.Interface定义的三个方法:获取数据集合长度的Len()方法.比较两个元素大小的Less()方法和交换两个元素位置的Swap()方法,就可以顺利对数据集合进行排序.sort包会根据实际数据自动选择高效的排序算法. 之前跟大家分享了

  • golang操作mongodb的方法

    本文实例讲述了golang操作mongodb的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "fmt"     "launchpad.net/mgo"     "launchpad.net/mgo/bson" ) type Mail struct {     Id bson.ObjectId "_id"     Name string     Emai

  • JS中位置与大小的获取方法

    scrollHeight,clientHeight,offsetHeight的区别 说明: scrollHeight:DOM元素的实际内容的高度,不包border的高度,会随DOM元素中内容的增加(超过可视区后)而变大. clientHeight:DOM元素内容可视区的高度,不包含滚动条和边框的高度. offsetHeight:DOM元素整体的高度,包括滚动条和边框. 当滚动条不出现的时候 这时候DOM元素中没有内容或者内容不超过可视区 scrollWidth=clientWidth,两者皆为可

  • golang执行命令获取执行结果状态(推荐)

    这几天在用golang写一个工具,要执行外部命令工具,而且还要将外部命令工具输出的日志也要输出出来.网上找了一下,资料很多,关键是执行的结果成功或失败状态没找到好的方法获取到. 刚开始想的是看错误日志,如果有错误日志,那么就是执行失败.测试的时候发现这样不行,发现有些时候会用error输出日志,但不一定就是执行失败.后来想用日志中的关键字匹配,因为有些命令执行成功或失败都是有关键字输出的,测试发现也不太好. 最后没办法,看了一下Cmd.Wait()方法的实现,突然眼前一亮,找到方法了,有一个Cm

  • python添加模块搜索路径和包的导入方法

    方法一:函数添加 1 import sys 2 查看sys.path 3 添加sys.path.append("c:\\") 方法二:修改环境变量 w用户可以修改系统环境变量PYTHONPATH 方法三:增加.pth文件,推荐! 在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了. 1 windows c:\python27\site-packages # 我们的学员把pth文件直接放在c:\pyt

  • IntelliJ idea激活码获取方法(idea2020激活码汇总)

    我们现在来给大家提供一下IntelliJ IDEA相关软件下载: 1.IntelliJ IDEA 2019.3.3 旗舰版 官方正式版(附汉化包+激活码+汉化激活方法) https://www.jb51.net/softs/543007.html 2.IntelliJ IDEA 2020.1 EAP 官方早期版 32/64位 https://www.jb51.net/softs/713980.html 接下来是我们整理的全部相关激活教程,非常详细! 1.IntelliJ Idea 2017注册码

随机推荐