gccgo

go 升级到1.16

假装没事ソ 提交于 2021-02-20 19:50:23
golang 多个版本管理 下载页面 多个版本管理 1.下载go1.16 ➜ bin pwd /Users/xxxx/go-dev/bin ➜ bin go get golang.org/dl/go1.15.8 go: finding golang.org/dl latest ➜ bin ll total 28816 -rwxr-xr-x 1 xxxxx staff 7.0M 2 20 18:33 go1.15.8 -rwxr-xr-x 1 xxxxx staff 7.0M 2 20 18:31 go1.16 确保可执行路径已经添加到PATH中. # go export GOPATH="${HOME}/go-dev" # GOROOT是GO的安装路径 export GOROOT="$(brew --prefix golang)/libexec" export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin" 新开终端/或者重新激活一下zshrc 2.下载go1.16 同时配置go1.16 env GOROOT ➜ ~ go1.16 go1.16: not downloaded. Run 'go1.16 download' to install to /Users/xxxxxx/sdk/go1.16 ➜ ~ go1.16 download ➜ ~

ubuntu 18.04 安装go并配置proxy

前提是你 提交于 2020-12-23 10:51:08
1. 安装 ubuntu 更新 sudo apt-get update sudo apt-get -y upgrade 2. 下载 Go 二进制文件 接下来的逻辑步骤是下载 Go 二进制文件,最新软件将在 golang.org/dl/ 上提供,并在终端中的命令下方安装 ubuntu 运行的版本 mkdir tmp cd /tmp wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz 解压缩下载的 tar,然后安装到系统中的所需位置。但是通常遵循文档最好将其安装在 /user/local/go 下。在终端中运行以下命令进行安装 sudo tar -xvf go1.15.6.linux-amd64.tar.gz sudo mv go /usr/local 3. 环境设置 我们正在设置的三个 Go 语言环境变量是 GOROOT,GOPATH 和 PATH。 GOROOT 是 Go 在机器中安装的路径 GOPATH 是工作目录的位置。 编辑.bashrc,添加以下几行 # loads go export GOROOT="/usr/local/go" export GOPATH="$HOME/go" export PATH="$GOPATH/bin:$GOROOT/bin:$PATH" export GOPROXY="https:

Go开发工程师

北城以北 提交于 2020-12-14 08:16:51
download: Go开发工程师:迎接上升风口,踏入蓝海行业! 适合零基础小白学习吗 小同学,当你问出这句话的时候,就说明你已经不是小白了,你是个很有主见的“大人”了,要是你问零基础适合学习么?我肯定的告诉你:非常适合,而且要相信自己不是小白,而是小牛~祝你更进一步,加油~ 课程中的项目是真的企业级/商业级项目么? 同学这个问题是我见过问得最有水平的问题了~ 确实网络上充斥了很多美其名曰“企业级/商业项目”,然而当你咨询想要体验一下项目效果,这么最低的标准都达不到,也就是网络充斥很多打着“企业级”名号的耍流氓项目,他们连最低的企业级标准--可部署可上线标准都达不到! 那么,同学想一下这个问题:什么样的标准才能称之为“企业级/商业级”?那么我认为有如下几点标准必须符合: 1、 【最低标准】可部署可上线(课程两个分别打开微信,搜索“租辆酷车”、“波哥电商”体验项目) 2、 真正的三端分离项目(两项目都符合,以微商城举例) 3、 满足企业真实的开发场景(以共享出行项目为例) (1) 先进的google设计理念+架构实践 (2) 符合当前最前卫的开发流程 (3) “敏捷开发”、“领域驱动DDD”等的最佳实践 4、 符合企业标准架构演进:从三端分离到微服务化项目迭代 (1) 微电商项目(前端+后端+后台管理-->搜索微服务化) (2) 共享出行项目(Typescript前端+后端+Vue3

mac安装go环境

本小妞迷上赌 提交于 2020-07-25 06:09:32
下载pkg文件 https://golang.google.cn/dl/ sudo vim /etc/profile 11 export GOROOT=/usr/local/go 12 export GOPATH=${GOROOT}/gopath 13 export PATH=$PATH:${GOROOT}/bin 14 export GO111MODULE=on 15 export GOPROXY=https://goproxy.cn source /etc/profile 说明: 1. GOROOT 为go安装目录, 在mac下使用pkg包安装的, 目录为 /usr/loca/go 如果用go mod gopath 设置为/usr/local/go/gopath 查看环境 go env macdeMacBook-Pro:www mac$ go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/mac/Library/Caches/go-build" GOENV="/Users/mac/Library/Application Support/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOINSECURE=""

Go 中的内联优化

淺唱寂寞╮ 提交于 2020-05-03 15:05:12
本文讨论 Go 编译器是如何实现内联的,以及这种优化方法如何影响你的 Go 代码。 请注意: 本文重点讨论 gc ,这是来自 golang.org 的事实标准的 Go 编译器。讨论到的概念可以广泛适用于其它 Go 编译器,如 gccgo 和 llgo,但它们在实现方式和功效上可能有所差异。 内联是什么? 内联inlining就是把简短的函数在调用它的地方展开。在计算机发展历程的早期,这个优化是由程序员手动实现的。现在,内联已经成为编译过程中自动实现的基本优化过程的其中一步。 为什么内联很重要? 有两个原因。第一个是它消除了函数调用本身的开销。第二个是它使得编译器能更高效地执行其他的优化策略。 函数调用的开销 在任何语言中,调用一个函数 1 都会有消耗。把参数编组进寄存器或放入栈中(取决于 ABI),在返回结果时的逆反过程都会有开销。引入一次函数调用会导致程序计数器从指令流的一点跳到另一点,这可能导致管道滞后。函数内部通常有前置处理preamble,需要为函数执行准备新的栈帧,还有与前置相似的后续处理epilogue,需要在返回给调用方之前释放栈帧空间。 在 Go 中函数调用会消耗额外的资源来支持栈的动态增长。在进入函数时,goroutine 可用的栈空间与函数需要的空间大小进行比较。如果可用空间不同,前置处理就会跳到运行时runtime的逻辑中,通过把数据复制到一块新的

golang sizeof 占用空间大小

戏子无情 提交于 2020-03-17 01:28:54
某厂面试归来,发现自己落伍了!>>> C语言中,可以使用sizeof()计算变量或类型占用的内存大小。在Go语言中,也提供了类似的功能, 不过只能查看变量占用空间大小。具体使用举例如下。 package main import ( "fmt" "unsafe" ) type Man struct { Name string Age int } func main() { m := Man{Name:"John", Age:20} fmt.Println("man size:", unsafe.Sizeof(m)) fmt.Println("name size:", unsafe.Sizeof(m.Name)) fmt.Println("age size:", unsafe.Sizeof(m.Age)) } output: man size: 24 name size: 16 age size: 8 Go 编译器是否会对结构体类型做填充以保证字段对齐 至少对于标准 Go 编译器和 gccgo, 答案是肯定的. 填充是操作系统和编译器相关的. 比如: type T1 struct { a int8 // 7 bytes padded on AMD64 OS and pad 3 bytes padded on i386 OS here b int64 c int16 // 6 bytes

gccgo on Precise

我与影子孤独终老i 提交于 2020-01-01 09:03:25
问题 When trying to link with gccgo on Precise, I get this linking error: matt@matt-1005P:~/src/gopath/src/meme$ gccgo cmd/meme/main.go -o meme /usr/bin/ld: cannot find -lgcc_s collect2: error: ld returned 1 exit status There are reports of this error, but no clean solutions. How do I fix it? gccgo (Ubuntu/Linaro 4.7.0-0ubuntu4) 4.7.0 Linux matt-1005P 3.2.0-24-generic-pae #38-Ubuntu SMP Tue May 1 16:40:26 UTC 2012 i686 i686 i386 GNU/Linux 回答1: This was recently brought up on the golang-nuts group:

OSX Golang static compile, and installing gccgo

不羁岁月 提交于 2019-12-24 12:09:01
问题 To outline my end goal. I want to compile a go application, statically linking to QT5. I have statically compiled QT5. Now I need to compile my Go program. As I understand it to do this, I have to use gccgo rather than the gc compiler. Fine. So first I have to install the gccgo compiler, which is gcc with the go language enabled in config. I have followed this: https://golang.org/doc/install/gccgo and this seperately: https://solarianprogrammer.com/2016/05/10/compiling-gcc-6-mac-os-x/ to see

Using Go 1.5 buildmode=c-archive with net/http.Server linked from C

吃可爱长大的小学妹 提交于 2019-12-21 04:37:13
问题 The upcoming release of Go 1.5 comes with new buildmodes which allow for exporting Go symbols to be linked and called from C code. I've been playing around with it and got basic "Hello world" examples working, but now I'm trying to link a Go library which starts a net/http.Server and it's failing. The code looks like this (it's also available here): gohttplib.go: package main import "C" import "net/http" //export ListenAndServe func ListenAndServe(caddr *C.char) { addr := C.GoString(caddr)

What are the primary differences between 'gc' and 'gccgo'?

一笑奈何 提交于 2019-12-18 10:01:29
问题 What are the primary differences between the two popular Go compilers, 'gc' and 'gccgo'? Build performance? Run-time performance? Command line options? Licensing? I'm not looking for opinions on which is best, just a basic overview of their differences, so I can decide which is best for my needs. 回答1: You can see more in "Setting up and using gccgo": gccgo, a compiler for the Go language. The gccgo compiler is a new frontend for GCC. Note that gccgo is not the gc compiler As explained in