GO language

看到有人说GO是未来10年的主流了,不论是速度迅速接近于C,还是语法简洁接近于C,结果尽然还是编译型的,不需要虚拟机,生成程序已经是本地字节码。

得,我不淡定了,这个不学,枉为程序员啊。

今天,讲讲linux平台,GO开发环境搭建。

一. 下载包

https://www.golangtc.com/static/go/1.9/go1.9.linux-amd64.tar.gz

哈哈,

https://www.golangtc.com/static/go/1.9/go1.9.windows-amd64.msi

交代一下,windows 上所有浏览器都不能下载这个源;CentOS 上也

不能下载这个源;但是Ubuntn 虚拟机上能下。哈哈,所以在此把

windows 上的msi 安装包也一并下载下来了。

二. 安装包

1. tar -xzf go1.9.linux-amd64.tar.gz -C /usr/local

2. vim /etc/profile

export GOROOT=/usr/local/go

export PATH=$GOROOT/bin:$PATH

export GOPATH=/root/gopkg

3. 刷新环境变量

source /etc/profile

4. 确认是否成功 go version

/usr/local/go/bin/go: cannot execute binary file

哈哈,这个是操作系统位数出问题,我们安装的是64 位,

CentOS 是32 位

怎么办,重办[下载32 位GO]

三. DEMO

因为现在做C的缘故,我的例子是这样

1. C 静态库

// foo.h

int count;

void foo();

//foo.c

#include <stdio.h>

#include <stdlib.h>

#include "foo.h"

int count = 6;

void foo()

{

printf("I am foo!\n");

}

gcc -o foo.o -c foo.c

arrv libfoo.a foo.o

//test-c-go.go

package main

// #cgo LDFLAGS: -L ./ -lfoo

// #include "foo.h"

import "C"

import "fmt"

func main() {

fmt.Println(C.count)

C.foo()

}

go build test-c-go-1.go

./test-c-go-1

6

I am foo!

Finally:

这叫从C跨到GO

哈哈,GO GO GO, 你现在有基础了,开GO吧:)