打包,压缩 我们的常规打包方式 $ go build Mac下我们用 ls -lh查看,可以看到我们打包出来的可执行文件会比较大,一般只写几行代码就回又3M以上的文件大小了. 我们的带压缩的打包方式 $ go build -ldflags '-w -s' Mac下我们用 ls -lh查看,可以看到我们打包出来的文件明显比刚才的小了一些,但是,也有2M之多. 压缩可执行文件(终极压缩) 我们使用第三方的压缩工具https://github.com/upx/upx/releases, Mac, li…
Golang 支持交叉编译,即在一个平台上生成另一个平台的可执行程序.方法如下: Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARC…
[golang]golang如何覆盖输出console,实现进度条 package main import( "fmt" "os" "time" ) func main(){ ;i!=;i=i+{ fmt.Fprintf(os.Stdout,"result is %d\r",i) time.Sleep(time.Second*) } fmt.Println("Over") } golang一个骚气的进度提示…
apt-get install gcc-mingw-w64 env CGO_ENABLED= GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build -o ./app/app.exe ./app/main.go env CGO_ENABLED= GOOS=windows GOARCH= CC=i686-w64-mingw32-gcc go build -o ./app/app.exe ./app/main.go Gox 是一个简单…
上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依赖的库. php项目中使用composer,javascript项目中使用npm,那么在go项目中,我们需要使用什么? 包依赖工具的选择 当前go的包管理工具有glide.godep.govendor和gvt等,相关对比的文章可以查看<go依赖包管理工具对比>. 功能对比可以参考如下内容(虽然跟上…
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包.类似 Java 的 Maven,PHP 的 Composer. Github:https://github.com/Masterminds/glide 在线文档:http://glide.readthedocs.io/en/stable 主要特性: 简单管理依赖 支持 versioning packages,包括 Semantic Versioning 2.0.0 支持 支持 aliasin…
#!/usr/bin/env bash set -e uname_s=`uname -s | awk '{print tolower($0)}'` uname_m=`uname -m` timeTag="-X 'main.BuildTime=$(date '+%Y-%m-%d %H:%M:%S')'" branchFlag="-X main.GitBranch=$(git name-rev --name-only HEAD)" commitFlag="-X…
俺的环境,os x,目的,生成64位linux的elf文件 直接下载osx的包就可以,不需要特意去下载源码包,我的go目录是~/golang/go cd ~/golang/go/srcGOOS=linux GOARCH=amd64 ./make.bash 终端党 到工程目录直接执行 GOOS=linux GOARCH=amd64 go build liteIde党 编译cross-linux64的配置文件,大概和这样差不多 # cross-compiler linux amd64 GOROOT=…
bug重现 [ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1. output: Access is denied. 0 dir(s) moved 解决方案 第一步 //找到这个文件 github.com/Masterminds/glide/path/winbug.go // CustomRename is similar to os.Rename but dea…
nexus 3.17.0 新版本对于go 包管理的支持是基于go mod 的,同时我们也需要一个athens server 然后在nexus 中配置proxy 类型的repo 参考配置 来自官方的配置图 说明 就和上边说的一样,我们需要一个athens server,nexus 对于go mod 的支持就是通过配置proxy到athens server 同时为了使用需要配置GOPROXY 环境变量 环境搭建 docker-compose 文件 version: "3" services…
1.godep:https://studygolang.com/articles/9877 2.dep:https://studygolang.com/articles/10589 3.glide:https://studygolang.com/articles/10453?fr=email…
1.去官网下载需要破解的IEDA 此处略去......... 2.需要破解的可以添加我微信获取破解jar包(百度网盘链接怕失效) 867716617 3.把jar包放在需要破解的IDEA安装目录中的lib下的目录里面 4.重启IDEA,会弹出激活方式,点击试用,再点击Evaluate,最后点击exit 5.再打开IDEA,会弹出I'cant,选中前面的复选框再点击Install jetbrains进入IDEA开始创建项目(到此破解结束) 备注:有不会的可以加微信问我!…
https://lrita.github.io/2017/12/12/golang-asm/#why 在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于plan9,此方面的 介绍很多,就不进行展开了.我们WHY和HOW开始讲起. golang汇编相关的内容还是很少的,而且多数都语焉不详,而且缺乏细节.对于之前没有汇编经验的人来说,是很难 理解的.而且很多资料都过时了,包括官方文档的一些细节也未及时更新.因此需要掌握该知识的人需要仔细揣摩, 反复实验…
无意中看到一篇文章说,当在for循环里使用select + time.After的组合时会产生内存泄露,于是进行了复现和验证,以此记录 内存泄露复现 问题复现测试代码如下所示: package main import ( "time" ) func main() { ch := make(chan ) go func() { var i = for { i++ ch <- i } }() for { select { case x := <- ch: println(x)…
Golang实现高并发的调度模型---MPG模式 传统的并发形式:多线程共享内存,这也是Java.C#或者C++等语言中的多线程开发的常规方法,其实golang语言也支持这种传统模式,另外一种是Go语言特有的,也是Go语言推荐的:CSP(communicating sequential processes)并发模型.不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”. “不要以共享内存的方式来通信,相反,要通过通信来共享内存.” go语言使用MPG模式来实现CSP :…
写在前面 本章将展示如何使用刚刚构建的跨工具链来交叉编译基本实用程序. M4安装 和前文一样,先进行解压,然后cd进入 注意:不需要构建build文件夹,直接输入以下配置文件 ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) 接着make,最后make DESTDIR=$LFS install Ncurses安装 和前文一样,先进行解压,然后cd进入 进入后,先用以下指令确认gawk工作…
nil 是不能比较的 不同类型的nil的address是一样的 不同类型的nil是不能比较的 nil 是map, slice, pointer, channel, func, interface的零值 immutable type 不是引用类型,int , string, bool都不是引用类型 在 immutable type 中不存在两个变量内存地址是一样的 map可以在函数内部改变,但是map不是引用类型 go中函数传递参数是按值传递的,在函数内部无法改变函数外部的值,但是map可以. m…
一. 前言 Golang 支持交叉编译, 在一个平台上生成然后再另外一个平台去执行. 而且编译的工具[build]这个工具是Golang 内置的,不需要你去下载第三方的包啥的,贼方便. 二. 交叉编译 Mac 下编译, Linux 或者 Windows 下去执行 # linux 下去执行 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go # Windows 下去执行 CGO_ENABLED=0 GOOS=windows GOARCH=a…
这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变. 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰的Maven和Gradle. Golang亦有godep.govendor.glide.gvt.gopack等等,本文主要给大家介绍gilde. glide是Golang的包管理工具,是为了解决Golang依赖问题的. 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷.罗列一下gola…
原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED= GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED= GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Ma…
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac安装的话都可以使用brew Install godep/govendor/glide go的环境管理类似于python的virtualenv:用来实现多个go版本并行运行的goenv:https://bitbucket.org/ymotongpoo/goenv go的包管理工具对比:https://…
Golang 支持交叉编译,在一个windows平台可以生成linux或Mac系统下的可执行文件. Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=dar…
golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的 1:执行脚本setGoPath.sh#!/bin/bashif [[ $GOPATH =~ .*$PWD.* ]]then echo "currnet dir is already in GOPATH"else export GOPATH=$GOPATH:$PWD echo "fininsh setting $PWD in GOPATH"fi在项目主目录中运行sou…
转自 https://blog.csdn.net/panshiqu/article/details/53788067 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build…
软件开发中,不可避免的会使用到第三方库,因此包管理工具可以极大的方便开发者管理第三方依赖,避免掉入"依赖地狱". 作为google强大背书的golang语言,golang官方包管理工具终于"千呼万唤始出来". 下面我们就来介绍一下golang的包管理工具 golang包管理工具 安装 go module是go语言内置的包管理工具,安装好go就可以使用 要求: go version >= 1.11 命令详细说明如下: $ go mod Go mod provid…
问题 golang如何在一个平台编译另外一个平台可以执行的文件.比如在mac上编译Windows和linux可以执行的文件.那么我们的问题就设定成:如何在mac上编译64位linux的可执行文件. 解决方案 golang的交叉编译要保证golang版本在1.5以上,本解决方案实例代码1.9版本执行的. 我们想要编译的文件hello.go hello.go package main import "fmt" func main() { fmt.Printf("hello, wo…
参考  https://golang.org/doc/install 自ECUG2013洗脑回来,就渴望早点接触Go 听着许式伟和谢孟军的演讲 发现go的网络库的确很强大,高负载利器,语言的一些精简导致很容易写出高效代码,而且开发效率  很高 不,应该是非常高   .(rpcjson,xml,.....其他一些自带的库也都很成熟) 是不是传说中的好东东,必须自己用了才能知道 ECUG视频传送们 www.youtube.com/watch?v=af7qOeN9Mvk 推荐一些相关书籍 学写的话,当…
http://www.philo.top/2015/02/06/golang-%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E5%BB%BA%E8%AE%AE/ 开发环境的必要特征 项目管理 快速文件跳转 自动语法检查 自动补全 查找定义 启动速度快 如果自己有需求的话插件可以随便写 灵活的运行配置 (project,lint,hint,autocomplete) 要实现上面几点我们来一步一步的配置. 我的大环境 OSX GO 1.4 HomeBrew go 环境安装…
概要 golang 的包管理一直没有官方统一的解决方案,因此也产生了很多非官方的包管理工具. 之前我一直使用的 gb(https://getgb.io/) 能够很好的隔开各个 golang 工程,当时 gb 创建的工程不太融入已有的 GOPATH 中. gb 相当于是把工程的目录作为 GOPATH,并且它的 vendor 目录也和 golang 自己的 vendor 不太一样. dep 的 Roadmap 中已经制定了成为 golang 官方包管理工具的计划, 所以,使用 dep 来组织自己的…
概述 最近使用golang开发项目时, 发现有时需要同时进行多个golang项目. 在这种情况下, 如果把所有的项目都放在 GOPATH 之下, 不仅管理麻烦(因为各个项目需要提交到不同的代码库), 而且编译的时候也不方便(如果不指定项目, 就会编译所有的项目). 于是, 就想如何将各个项目在物理上就隔离开. 我是用emacs开发golang项目的, 所以隔离之后, 还要考虑如何让emacs的golang插件能够正常工作. 使用 gb 隔离各个 golang 项目 gb 是用来管理golang项…