golang

GOLANG配置

﹥>﹥吖頭↗ 提交于 2020-02-12 03:19:31
根据操作系统下载对应的软件包 https://golang.google.cn/dl/ GOROOT就是go的安装路径 在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go的可执行文件的路径: 操作如下: 在~/.bash_profile中配置如下: export $PATH:$GOROOT/bin 如果是windows需要使用;符号分割两个路径, mac和类unix都是用:符号分割 GOPATH: go install/go get和 go的工具等会用到GOPATH环境变量. GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径 (其实也是你的工作目录, 你可以在src下创建你自己的go源文件, 然后开始工作)。 GOPATH之下主要包含三个目录: bin、pkg、src bin目录主要存放可执行文件; pkg目录存放编译好的库文件, 主要是*.a文件; src目录下主要存放go的源文件 不要把GOPATH设置成go的安装路径, 可以自己在用户目录下面创建一个目录, 如gopath 操作如下: cd ~ mkdir gopath 在~/.bash_profile中添加如下语句: GOPATH=/Users/username/gopath

golang连接mysql实现增删改查(CROD)

那年仲夏 提交于 2020-02-11 15:06:17
1.安装mysql driver go get -v github.com/go-sql-driver/mysql 2.初始化sql use test; CREATE TABLE `t_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.连接数据库代码 package db import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func Conn() (*sql.DB, error){ // root:root@tcp(127.0.0.1:3306)/test 说明: // 第一个root是用户名 // 第二个root是密码 // 127.0.0.1:3306是地址 // test 是数据库 conn,err := sql.Open("mysql","root:root@tcp(127.0.0.1:3306)/test") return conn, err } 4.数据库增删改查代码 package db import

golang访问MongoDB数据库

泄露秘密 提交于 2020-02-10 19:10:20
最常用的第三方驱动 package main import ( "fmt" _ "github.com/sbunce/bson" "gopkg.in/mgo.v2" "labix.org/v2/mgo/bson" ) //type Student struct { //Name string `bson: "name"` //Age int `bson: "age"` //Sid string `bson: "sid"` //Status int `bson: "status"` //} type Student struct { Name string Age int Sid string Status int } type Per struct { Per []Student } var ( ip = "172.17.0.3" ) func main() { fmt.Println("vim-go") b := insert() fmt.Printf("插入数据,%v\n", b) b = findOne() b = findAll() } func insert() bool { mongo, err := mgo.Dial(ip) // 建立连接 defer mongo.Close() if err != nil { return false } client :=

golang编译exe程序设置图标和软件信息

此生再无相见时 提交于 2020-02-10 17:53:56
前期准备一张ico图标,以下操作均为windows下进行 1、下载goversioninfo,地址https://github.com/josephspurrier/goversioninfo go get https://github.com/josephspurrier/goversioninfo 2、下载完成后进入 %GOPATH%/src/vendor/github.com/josephspurrier/goversioninfo/cmd 编译生成可执行文件 go build -o %GOPATH%\bin\goversioninfo.exe main.go 3、在环境变量PATH中添加 %GOPATH%\bin 4、复制versioninfo.json到自己的项目目录下,在testdata\example32和testdata\example36目录下有,随便复制一个,并将其中 StringFileInfo 下的参数修改为自己实际参数,设置 IconPath 为ico名称,例如 "IconPath": "demo.ico", //ico、main.go、配置文件都在同级目录中 5、在自己项目的main.go文件顶部增加备注行//go:generate goversioninfo -icon=demo.ico,其中icon文件请修改为自己的文件名称 6

golang高级学习笔记

青春壹個敷衍的年華 提交于 2020-02-09 14:09:01
1. 在以字符串作为参数传递给fmt.Println函数时,字符串的内容并没有被复制 ——传递的仅仅是字符串的地址和⻓度(字符串的结构在 reflect.StringHeader 中定义)。在Go语⾔ 中,函数参数都是以复制的⽅式(不⽀持以引⽤的⽅式)传递(⽐较特殊的是,Go语⾔闭包函数对外部 变量是以引⽤的⽅式使⽤) 老婆董香镇楼。 来源: https://www.cnblogs.com/wddx5/p/12286924.html

VS Code Golang环境安装

孤者浪人 提交于 2020-02-09 09:56:37
1)安装gocode go get -u -v github.com/nsf/gocode 2)安装godef go get -u -v github.com/rogpeppe/godef 3)安装golint go get -u -v github.com/golang/lint/golint 4)安装go-find-references go get -u -v github.com/lukehoban/go-find-references 5)安装go-outline go get -u -v github.com/lukehoban/go-outline 6)安装goreturns go get -u -v sourcegraph.com/sqs/goreturns 7)安装gorename go get -u -v golang.org/x/tools/cmd/gorename 8)安装delve go get -u -v github.com/derekparker/delve/cmd/dlv 来源: https://www.cnblogs.com/hongduo168/p/5486348.html

golang 安装与环境配置

情到浓时终转凉″ 提交于 2020-02-09 09:56:19
安装 https://golang.org/doc/install sublime go 环境配置 下载 Go Sublime https://github.com/DisposaBoy/GoSublime.git 添加 Go Sublime 插件 Preferences -> Browse Packages 将插件放入 配置 gopath Preferences -> Package Settines -> Settings-Users 添加 { "goroot": "D:\\Programfile\\Go", "gopath": "E:\\workspace\\go", } Goland 配置 File Watchers 插件,用来保存时调用 go tools, Settings -> Tools -> File Watchers 添加 Go Tools GO tools goimports 检查引入包,去除无用包,加入未导入包 go get -u -u golang.org/x/tools/imports cd golang.org/x/tools/cmd/goimports go install gofmt 自动格式化代码,自带 gometalinter 语法检查 配置 环境变量 GOROOT go 安装目录,不需配置,安装后加到环境变量 GOPATH 运行 go get

Golang

旧时模样 提交于 2020-02-09 09:36:21
Golang 关键字 var和const :变量和常量的声明 go : 用于并行 go 关键字用来创建 goroutine (协程),是实现并发的关键。 1234567891011 //go 关键字放在方法调用前新建一个 goroutine 并让他执行方法体go GetThingDone(param1, param2);//上例的变种,新建一个匿名方法并执行go func(param1, param2) {}(val1, val2)//直接新建一个 goroutine 并在 goroutine 中执行代码块go { //do someting...} Golang flag 解析入参 flag 是 go 标准库提供的解析命令行参数的包。 使用 flag.String(), Bool(), Int() 等函数注册 flag 123456789 import "flag"var ip = flag.Int("flagname", 1234, "help message for flagname")// 下面的方式也是可以的var flagvar intfunc () { flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")} 自定义 flag 需要实现 flag.Value interface:

python调用golang编写的动态链接库

末鹿安然 提交于 2020-02-09 07:42:18
楔子 我们都知道python的效率很低,但是好在可以和C语言无缝结合,C语言写好扩展模块之后再让python去调用简直不要太方便。但是使用C编写扩展模块也不是件容易的事情,于是笔者想到了go,go的效率虽然不如C,但是也没有逊色太多。而且go毕竟是一门高级语言,丰富的标准库、数据类型,编写扩展模块比C方便太多了。下面我们就来看看如何使用golang编写扩展模块交给python调用。 另外python和go之间进行交互,本质上是通过C语言来作为媒介的。在go中定义函数,参数和返回值需要是C中的类型,python调用时,参数和返回值也要指定为C中的类型。而这里只会介绍golang和C中的类型如何转换,至于python的类型和C的类型如何转换我只会直接拿来用,就不写注释介绍具体的用法了。因为python和C中的类型如何转换,比如如何在python中实现C中的数组、结构体等等,我在另一篇博客中 https://www.cnblogs.com/traditional/p/12243307.html 已经介绍的比较详细了,如果对python类型和C的类型之间的转化不是很清楚的小伙伴,可以先去看一看。 举个小栗子 package main import "C" //export age_incr_1 func age_incr_1(age int) int { return age + 1 }

golang原生的RPC实现

十年热恋 提交于 2020-02-08 16:54:36
server端代码 package main import ( "math" "net" "net/http" "net/rpc" ) //math calculate type MathUtil struct { } //该方法对外暴露,提供计算圆形面积的服务 func (mu *MathUtil)CalculateCircleArea(req float32,resp *float32)error{ *resp = math.Pi * req * req //计算圆形面积 s= pi * r * r return nil } func main(){ //1.初始化指针数据类型 mathUtil := new(MathUtil) //2.调用net/rpc包的功能 将服务对象进行注册 err := rpc.Register(mathUtil) //如果想自定义服务名,可以使用rpc.RegisterName("MathUtil",mathUtil) if err != nil { panic(err.Error()) } //3.通过该函数把mathUtil中提供的服务注册到http协议上,方便调用者可以利用http的方式进行数据传递 rpc.HandleHTTP() //4.在特定的端口进行监听 listen,err := net.Listen("tcp",":8081")