首页 > 文章列表 > 深入了解Golang包的获取方法

深入了解Golang包的获取方法

golang
122 2022-12-17

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)

}