studygolang

go语言编译安装protobuf : protoc-gen-go: program not found or is not executable

烂漫一生 提交于 2020-08-12 05:53:46
引用文献:https://studygolang.com/articles/10473 https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ 一、Protobuf简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 二、在安装proto-gen-go时,先配置环境再下载,不然可执行程序protoc下载不下来;就会如下错误: protoc-gen-go: program not found or is not executable 1.gedit ~/.bashrc export PATH = "PATH:$GOPATH/bin" ($GOPATH: /opt/gopath) 2.source ~/.bashrc 3. go

golang连接达梦数据库的一个坑

白昼怎懂夜的黑 提交于 2020-08-08 04:22:07
golang连接达梦数据库的一个坑 有一次项目中用到了达梦数据库,后端语言使用的 golang ,达梦官方并未适配专门的 golang 连接方式,正一筹莫展的时候发现达梦提供了 odbc 的连接,这样可以使用类似 mssql 的 odbc 连接方式连接达梦数据库。 使用的达梦数据库版本为 DM8 达梦数据库开启 odbc 连接 参考博客1 、 参考博客2 参照上面两个博客内容配置 odbc 连接 golang 代码 一些参考文档: package main import ( "fmt" _ "github.com/alexbrainman/odbc" // google's odbc driver "github.com/go-xorm/xorm" "xorm.io/core" "github.com/axgle/mahonia" ) type Address struct { Addressid int64 `xorm:"addressid"` Address1 string `xorm:"address1"` Address2 string `xorm:"address2"` City string `xorm:"city"` Postalcode string `xorm:"postalcode"` } // 字符串解码函数,处理中文乱码 func

go语言包管理

狂风中的少年 提交于 2020-08-06 11:00:52
要构建Go语言的编译环境,首先得安装Go语言的编译工具 官方路径:https://golang.google.cn/dl/,一般是访问不了,使用国内网站:https://studygolang.com/dl 然后需要设置环境变量 在windows下需要将go编译器的安装路径加到Path,还要设置GOROOT和GOPATH变量,分别对应GO安装目录和项目下的src目录。 GO包管理一般有两种方式:GOPATH方式和GO Module方式 GOPATH方式是GO原生支持的方式,一般要求项目下包含三个目录: bin:放置可执行文件 pkg:放置编译生成的lib包 src:放置源码,go编译查找源文件目录 例如项目结构如下: 一般源文件的包名就是所在的文件夹名,如果在main函数中要调用algorithms中的qsort中的函数,只需要import文件即可: 如果需要导入github上的开源代码,直接import项目的url链接即可,并且需要go get导入到本地路径,go会自动在src目录下生成github.com目录。 Go Module管理方式 Go Module方式是golang1.11新增的特性,直接基于模块管理,而不是基于固定目录 要使用Go Module,需要先设置go变量GO111MODULE=on 要注意Go Module方式跟GOPATH方式不兼容

Go基础之基础

拈花ヽ惹草 提交于 2020-05-04 10:11:23
let’s go https://golang.org/ https://play.golang.org/ https://studygolang.com/articles/13958 https://www.jianshu.com/p/aeb27a6aa42d https://www.runoob.com/go/go-variables.html 基础的不想写,一太多二重复率太高,陆陆续续学习go到今天,应该总结了,fighting 开发工具 工欲善其事必先利其器,GoLand 30天免费试用期 LiteIDE开源、跨平台轻量级 https://www.runoob.com/go/go-ide.html 注意 相同代码块不可对相同名称变量做再次初始化声明:= 定义变量之前不能使用,声明了局部变量没有使用都将编译错误 省略var 使用":=" ,且“:=”左测要声明新的变量!出现在函数体中 var vname1, vname2, vname3 = v1, v2, v3和python是不是很像,自动推断类型,并行赋值 val,err = Func1(var1) 全局变量声明: var ( a int b bool ) 基础 值类型 int、float、bool、string这些基本数据类型属于值类型(具体请百度),使用该类型的变量直接指向存在内存中的值 使用

使用Golang 封装一个自己的框架----请求处理篇

白昼怎懂夜的黑 提交于 2020-04-13 12:55:27
【今日推荐】:为什么一到面试就懵逼!>>> 前言:此框架的请求处理主要是依赖于Golang中的net/http包 http.ListenAndServe 方法的使用 实现http简单服务示例:参考文档 https://studygolang.com/pkgdoc 示例1 http.Handle("/foo", fooHandler) http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) }) log.Fatal(http.ListenAndServe(":8080", nil)) 示例2: s := &http.Server{ Addr: ":8080", Handler: myHandler, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } log.Fatal(s.ListenAndServe()) 本框架的处理思路: 从http包看,http.ListenAndServe(":8080", nil) 这个方法的第二个参数是http