golang

golang-方法和接口

陌路散爱 提交于 2019-12-02 16:27:45
1.方法   方法类似函数 ,多了一个接收者 ,接收者是指针指向结构体(也可以是值) ,方法与结构体绑定 (可以理解为模板定义方法) ,方法位于结构体内部   方法集可以理解就是多个方法   可以组合其他结构体方法 ,直接将其他结构体类型放入属性 2.创建方法   接收者指定好对应的结构体 ,可以直接引用结构体内的所有属性和方法 1 package main 2 3 import "fmt" 4 5 type Ven struct { 6 Name string 7 address string 8 } 9 10 func (v *Ven) Name_info() string { 11 return "公司名称" + v.Name 12 } 13 14 func (v *Ven) Address_info() string { 15 return fmt.Sprintf(",公司地址%v", v.address) 16 } 17 18 func (v *Ven) Info() string { 19 return v.Name_info() + v.Address_info() 20 } 21 22 func main() { 23 a1 := Ven{ 24 Name: "亚马逊", 25 address: "美国", 26 } 27 28 fmt.Println(a1

mac下安装beego,使用bee创建和运行项目

女生的网名这么多〃 提交于 2019-12-02 15:52:30
安装golang就不详细说了,下载pgk包安装,默认安装安装在 /usr/local/go 目录。 程序会自动设置环境变量,go env 可查看目前的go的环境变量。 现在GO可以执行了,在命令行输入 go version可查看golang版本信息。下面还要配置一个GOPATH环境变量,是工作目录。 我把GOPATH建立在/Volumes/苹果专区/WEB/golang 编辑用户配置文件: vi ~/.bash_profile 加入 # GOPATH export GOPATH="/Volumes/苹果专区/WEB/golang" 想立即生效请运行: source ~/.bash_profile 接着安装beego。运行以下指令,安装beego(需要先安装GIT): go get github.com/beego/bee 没有意外的话,安装完beego,GOPATH会生成以下3个目录: bin 存储编译后的可执行文件 pkg 存放编译后生成的包文件 src 存放项目的源码 此时需要添加bee的环境变量,才能执行 bee 的命令。win下一样要添加环境变量。 再次编辑用户配置文件: vi ~/.bash_profile 加入 # bee PATH="${GOPATH}/bin:${PATH}" export PATH 运行命令生效: source ~/.bash_profile

让golang在Raspberry Pi上飞一会

落花浮王杯 提交于 2019-12-02 15:09:16
最近在玩2样东西,一样是go语言(golang),一样是Raspberry Pi(树莓派)。那么能在Raspberry上运行go语言程序吗? Golang的文档上说是支持多平台的,其中也包括了ARM,看来有戏了,兴冲冲打开 http://code.google.com/p/go/downloads/list ( golang编译器的下载页面 ) ,却发现没有arm平台的二进制大包下载。所以arm平台下的需要下载源码自己编译。 Raspberry上编译前准备及配置 一。俗话说巧妇难为无米之炊,要编译源码先得下源码,下载后这里解压到 /home/pi/go 目录下。 二。确认需要的工具系统已经具备了:mercurial 、gcc 和 libc6-dev 。如果不确定有没有只需输入下列命令: sudo apt-get install -y mercurial gcc libc6-dev 以上命令实现安装3个必需的工具。 三。配置环境变量。因为第一点的时候我把下载下来的源码解压到/home/pi/go 目录下了,所以将 GOROOT 变量值设置为该路径: export GOROOT=/home/pi/go export GOARCH=arm 但其实不设置的话也是可以的,它默认是等一下命令行执行位置的父目录。 四。也是配置环境变量。 GOARM 变量可以不设置,默认值为:“6″

golang交叉编译工具,gox使用入门

有些话、适合烂在心里 提交于 2019-12-02 15:08:25
gox 入门教程 先说下交叉编译是什么? 交叉编译也就是你可以在linux上编译出可以在windows上运行的程序,在32位系统编译出64位系统运行的程序。 gox就是方便你使用golang的交叉编译的工具。 安装gox 首先你的机器上需要装有golang。配置好了GOROOT,GOPATH这两个环境变量。 我机器上的配置是这个样子(仅供参考) export GOROOT=$HOME/go export GOPATH=$HOME/goproj export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN 安装gox其实很简单(只需要2步)。 go get github.com/mitchellh/gox 之后命令行输入 gox -h ,应该会用输出的,不然你要检查下PATH变量设置的是否正确。 下一步需要编译出其他平台需要的库。这步有一点慢,要有点耐心。 gox -build-toolchain 输出大概是这个样子 The toolchain build can't be parallelized because compiling a single Go source directory can only be done for one platform at a time. Therefore, the toolchain for each

【golang实战】使用golang发送以及接受数据

纵饮孤独 提交于 2019-12-02 15:04:44
发送以及接收 application/x-www-form-urlencoded 数据 客户端发送数据,并设置 Content-Type 为 application/x-www-form-urlencoded func test() { var data = make(url.Values) data.Set("test2", "test-v") // 组装数据 c := &http.Client{} req, err := http.NewRequest("POST", reqUrl, strings.NewReader(data.Encode())) if err != nil { log.Fatalln(err) } req.Header.Set("Content-Type", "application/x-www-form-urlencoded") log.Println(req.URL.String()) resp, err := c.Do(req) if err != nil { log.Fatalln(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatalln(err) } } 服务端接受数据,使用 r.ParseForm()

Golang安装和配置

别来无恙 提交于 2019-12-02 15:02:07
Golang安装和配置 Linux Golang 下载源码,解压。 # /home/superpika为你的主目录 mkdir /home/superpika/go mkdir /home/superpika/code cd /home/superpika wget https://studygolang.com/dl/golang/go1.9.2.linux-amd64.tar.gz tar -zxvf go1.9.2.linux-amd64.tar.gz 然后设置环境变量: vim /etc/profile.d/myenv.sh export GOROOT=/home/superpika/go export GOPATH=/home/superpika/code export GOBIN=$GOROOT/bin export PATH=.:$PATH:/app/go/bin:$GOPATH/bin:/home/superpika/software/Gogland-171.3780.106/bin 生效: source /etc/profile.d/myenv.sh 其中 /home/superpika/software/Gogland-171.3780.106/bin 为IDE二进制所在位置, IDE下载 . 因为 Golang 的版本较多, 我建议应该适当更新。 Docker

简单二次封装的Golang图像处理库:图片裁剪

元气小坏坏 提交于 2019-12-02 15:01:13
简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u github.com/hunterhug/go_image 2.主要函数 按照宽度进行等比例缩放,第一参数是图像文件,第二个参数是缩放后的保存文件路径 err := ScaleF2F(filename, savepath, width) 按照宽度和高度进行等比例缩放,第一参数是图像文件,第二个参数是缩放后的保存文件路径 err = ThumbnailF2F(filename, save1path, width, height) 检测图像文件真正文件类型,并返回真实文件名,参数为图像文件位置 realfilename, err := RealImageName(savepath) 改变图像文件名,第一个参数为文件原始名字,第二个参数是文件改名后名字,第三个参数表示是否强制改名 err=ChangeImageName(savepath,realfilename,false) 三.使用示例 3.1.example.go package main import ( "fmt" . "github.com/hunterhug/go_image/go_image" ) /

Go语言开发环境IntelliJ IDEA,可惜没有remote debug

喜欢而已 提交于 2019-12-02 14:57:19
开发系统: Mac OS X 10.11.5 EI Capitan 开发工具: 代码编写: IntelliJ IDEA (实际用了WebStorm。搞不好Android Studio都行)。 编译测试运行调试: Docker Toolbox (Docker的真正的编译和测试环境是在一个特权容器里做的,好的。) 基本想法就是:在集成开发环境下写代码比较轻松,能够自动完补定位什么的,愈发检查通过了以后,再在特权容器里编译测试运行,甚至,通过IDEA远程调试,就是gdbserver那一套。 想得简单,实际做了一下,出了gdb remote以外都还行,但是也有些不爽的地方。 用IntelliJ IDEA打开docker源码目录,剩下来的他怎么提醒就怎么做。 随便一打开一个go文件,它就提醒安装golang插件。那就点击安装。 ####然后提示没有Go SDK,那就安装Go SDK到本机: brew install golang 然后把SDK路径配制成 /usr/local/Cellar/go/1.6.3/libexec 。 ####然后Go插件唧唧歪歪说缺少GOPATH环境变量。 这就是恶心的地方了,这还算好的了,以前还需要另一个GOROOT变量,经过进化,终于省掉了一个,可是还留着尾巴。别想这垃圾了,随便设定一个就行了。 这个GOPATH其实相当于NodeJS的NPM管理包的node

LevelDB性能测试|Golang调用LevelDB

大兔子大兔子 提交于 2019-12-02 14:53:25
LevelDB性能测试|Golang调用LevelDB 不同方式使用压力测试 用ssdb,TCP连接方式调用,底层存储levelDB 直接调用Cgo的levelDB (必须保证串行) 直接调用Golang的LevelDB (必须保证串行) 开始: go test -v -test.run="DB.*" -test.bench="DB.*" -test.count=1 -test.benchtime=3s go test -v -test.run="Raws.*" -test.bench="Raws.*" -test.count=1 -test.benchtime=3s go test -v -test.run="Normal.*" -test.bench="Normal.*" -test.count=1 -test.benchtime=3s 性能对比: 1.调用SSDB:随机读写,和顺序读写差异不大,网络延迟是主要问题。 goos: linux goarch: amd64 pkg: common/ssdb Benchmark_DBSXSSDBSET 30000 127546 ns/op Benchmark_DBSXSSDBGET 50000 118855 ns/op Benchmark_DBRandomSSDBSET 30000 128268 ns/op Benchmark

golang : MVC之view

≡放荡痞女 提交于 2019-12-02 14:51:48
背景: 本篇使用beego框架实验了一下 golangMVC之view view 就是展示层,beego中采用了 go temple 解析具体的字段 ,这样可以将数据写入到 control层| models层 控制,view层只做为展示层即可。实现了数据 暂时分离。 实验 1.先创建一个 control 的go文件 package controllers import ( "WEB/models" "github.com/astaxie/beego" ) //ViewController is a Controller to handel struct of models type ViewController struct { beego . Controller } //Get is a function func ( c * ViewController ) Get ( ) { var ( users [ ] models . UserInfo ) models . ReadUserInfo ( & users ) c . Data [ "Users" ] = users c . TplName = "users.tpl" } 我们创建一个新的control 文件 ,用于获取所有的用户信息,通过调用models层中的ReadUserInfo方法获取所有用户 同时将获取的用户