Go语言是谷歌2009发布的第二款开源编程语言。
Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
Go特色
简洁 快速 安全
并行 有趣 开源,
内存管理,数组安全,编译迅速
Go语言具有以下的特征
自动垃圾回收
更丰富的内置类型
函数多返回值
错误处理
匿名函数和闭包
类型和接口
并发编程
反射
语言交互性
二、软件安装过程
[root@node1 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@node1 ~]# wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
--12:10:22-- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
Resolving storage.googleapis.com... 172.217.24.16, 2404:6800:4008:800::2010
Connecting to storage.googleapis.com|172.217.24.16|:443... connected.
ERROR: certificate common name `*.storage.googleapis.com' doesn't match requested host name `storage.googleapis.com'.
To connect to storage.googleapis.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
[root@node1 ~]# wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz --no-check-certificate
--12:10:49-- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
Resolving storage.googleapis.com... 172.217.24.16, 2404:6800:4008:800::2010
Connecting to storage.googleapis.com|172.217.24.16|:443... connected.
WARNING: certificate common name `*.storage.googleapis.com' doesn't match requested host name `storage.googleapis.com'.
HTTP request sent, awaiting response... 200 OK
Length: 90029041 (86M) [application/x-gzip]
Saving to: `go1.8.3.linux-amd64.tar.gz'
100%[==================================================>] 90,029,041 341K/s in 3m 34s
12:14:33 (410 KB/s) - `go1.8.3.linux-amd64.tar.gz' saved [90029041/90029041]
[root@node1 ~]# ls
anaconda-ks.cfg Desktop go1.8.3.linux-amd64.tar.gz jdk-7u67-linux-x64.rpm sqlite-3.5.6.tar.gz
apache-flume-1.6.0-bin.tar.gz elasticsearch-2.1.1.rpm grafana-1.9.1.tar.gz kafka_2.9.1-0.8.2.2.tgz tomcat7 apache-tomcat-7.0.67.zip elasticsearch-2.1.1.tar.gz influxdb-0.9.4.2-1.x86_64.rpm kibana-4.3.1-linux-x64.tar.gz yum-3.2.29-30.el6.noarch.rpm
collectd-5.5.0 facette-0.3.0 install.log logstash-2.1.1.tar.gz yum-3.2.29-81.el6.centos.noarch.rpm
collectd-5.5.0.tar.gz facette-0.3.0.tar.gz install.log.syslog sqlite-3.5.6
[root@node1 ~]# tar -zxvf go1.8.3.linux-amd64.tar.gz
[root@node1 ~]# ll
total 404848
-rw------- 1 root root 883 Nov 22 2015 anaconda-ks.cfg
-rw-r--r-- 1 root root 52550402 May 20 2015 apache-flume-1.6.0-bin.tar.gz
-rw-r--r-- 1 root root 9461749 Dec 7 2015 apache-tomcat-7.0.67.zip
drwxr-xr-x 6 131026 5000 4096 Jan 29 2016 collectd-5.5.0
-rw-r--r-- 1 root root 2244454 May 27 2015 collectd-5.5.0.tar.gz
drwxr-xr-x 2 root root 4096 Jan 25 2016 Desktop
-rw-r--r-- 1 root root 28896574 Dec 17 2015 elasticsearch-2.1.1.rpm
-rw-r--r-- 1 root root 29007342 Dec 17 2015 elasticsearch-2.1.1.tar.gz
drwxrwxr-x 9 root root 4096 Jan 29 2016 facette-0.3.0
-rw-r--r-- 1 root root 1040968 Jan 29 2016 facette-0.3.0.tar.gz
drwxr-xr-x 11 root root 4096 May 24 11:16 go
-rw-r--r-- 1 root root 90029041 May 24 14:09 go1.8.3.linux-amd64.tar.gz
-rw-r--r-- 1 root root 1263568 Dec 29 2014 grafana-1.9.1.tar.gz
-rw-r--r-- 1 root root 8248423 Sep 29 2015 influxdb-0.9.4.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35250 Nov 22 2015 install.log
-rw-r--r-- 1 root root 4264 Nov 22 2015 install.log.syslog
-rwxrwxr-x 1 root root 126857158 Nov 24 2015 jdk-7u67-linux-x64.rpm
-rw-r--r-- 1 root root 17139880 Nov 24 2015 kafka_2.9.1-0.8.2.2.tgz
-rw-r--r-- 1 root root 30408272 Dec 16 2015 kibana-4.3.1-linux-x64.tar.gz
-rw-r--r-- 1 root root 12222033 Feb 1 2016 logstash-2.1.1.tar.gz
drwxr-xr-x 13 1000 users 4096 May 27 16:28 sqlite-3.5.6
-rw-r--r-- 1 root root 2543979 Jul 30 2016 sqlite-3.5.6.tar.gz
drwxr-xr-x 9 root root 4096 Feb 26 13:14 tomcat7
-rw-r--r-- 1 root root 1016296 May 10 2012 yum-3.2.29-30.el6.noarch.rpm
-rw-r--r-- 1 root root 1042364 May 27 16:14 yum-3.2.29-81.el6.centos.noarch.rpm
[root@node1 ~]# rm -rf go1.8.3.linux-amd64.tar.gz
[root@node1 ~]# cd go/
[root@node1 go]# ls
api AUTHORS bin blog CONTRIBUTING.md CONTRIBUTORS doc favicon.ico lib LICENSE misc PATENTS pkg README.md robots.txt src test VERSION
[root@node1 go]# cd bin/
[root@node1 bin]# ls
go godoc gofmt
[root@node1 bin]# pwd
/root/go/bin
[root@node1 bin]# vi ~/.bash_profile
JAVA_HOME=/opt/es5.0/jdk1.8.0_111
HADOOP_HOME=/opt/hadoop
STORM_HOME=/opt/storm096
GO_HOME=/root/go
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$STORM_HOME/bin:$GO_HOME/bin
export PATH JAVA_HOME HADOOP_HOME STORM_HOME GO_HOME
[root@node1 bin]# source ~/.bash_profile
[root@node1 bin]# go
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files
doc show documentation for package or symbol
env print Go environment information
bug start a bug report
fix run go tool fix on packages
fmt run gofmt on package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages
Use "go help [command]" for more information about a command.
Additional help topics:
c calling between Go and C
buildmode description of build modes
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages description of package lists
testflag description of testing flags
testfunc description of testing functions
Use "go help [topic]" for more information about that topic.
[root@node1 ~]# go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
[root@node1 ~]# go build demo.go
go: cannot find GOROOT directory: /usr/local/go/go
[root@node1 ~]# export GOROOT=/usr/local/go
[root@node1 ~]# export GOROOT=/usr/local/go/go
[root@node1 ~]# go build demo.go
go: cannot find GOROOT directory: /usr/local/go/go
解释这是GO语言的一个小Bug:原来还需设置GOROOT这个属性 The default is hard-coded at compile time; in thelinux distribution it is set to /usr/local/go
[root@node1 ~]# export GOROOT=/usr/local/go
[root@node1 ~]# mv go/ /usr/local/
mv: cannot move `go/' to a subdirectory of itself, `/usr/local/go'
[root@node1 ~]# pwd
/root
[root@node1 ~]# rm -rf /usr/local/go/
[root@node1 ~]# mv -r go/ /usr/local/
mv: invalid option -- r
Try `mv --help' for more information.
[root@node1 ~]# cp -r go/ /usr/local/
[root@node1 ~]# rm -rf go/
解决方案:安装go语言在/usr/local/go目录下面
[root@node1 ~]# vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/opt/es5.0/jdk1.8.0_111
HADOOP_HOME=/opt/hadoop
STORM_HOME=/opt/storm096
GO_HOME=/usr/local/go
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$STORM_HOME/bin:$GO_HOME/bin
export PATH JAVA_HOME HADOOP_HOME STORM_HOME GO_HOME
unset USERNAME
[root@node1 ~]# vi demo.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
~
"demo.go" 6L, 75C written
[root@node1 ~]# go build demo.go
[root@node1 ~]# ls
influxdb-0.9.4.2-1.x86_64.rpm kibana-4.3.1-linux-x64.tar.gz yum-3.2.29-30.el6.noarch.rpm
collectd-5.5.0.tar.gz elasticsearch-2.1.1.tar.gz install.log logstash-2.1.1.tar.gz yum-3.2.29-81.el6.centos.noarch.rpm
[root@node1 ~]# sh demo
demo: demo: cannot execute binary file
[root@node1 ~]# ./demo
Hello, World!
[root@node1 ~]# go run demo.go
Hello, World!
[root@node1 ~]#
相关推荐
《Go语言编程》一书由许式伟、吕桂华等人编著,旨在介绍Go语言这一新兴编程语言的全貌及其重要特性。Go语言在设计时考虑到编程的简洁性、并行与分布式支持、软件工程需求以及编程哲学的创新,力图在互联网时代成为一...
这些知识点对于希望在Go语言环境下构建Web应用的开发者来说至关重要。 书的附录部分提供了Go语言常见问题的总结、参考资料以及作者柴树杉的简介,这些都是读者在深入学习Go语言时可以参考的重要信息。 本书《Go...
Go语言是一种静态类型、编译型、并发型、垃圾回收的编程语言,由Google开发,于2009年发布。Go语言的设计目标是提供一种高效、简洁、可靠的编程语言,结合了静态类型和动态类型语言的优点。 语言简史 Go语言的设计...
Go语言,又称Golang,是Google在2009年推出的开源编程语言,它以简洁、高效、并发支持著称,广泛应用于云计算、Web服务和系统软件开发等领域。 1. **Go语言简介** Go语言由Robert Griesemer、Rob Pike及Ken ...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它在设计时兼顾了开发效率和系统性能,因此在云计算、微服务和网络编程等领域得到广泛应用。 书中的内容...
首先,Go语言在面向过程和面向对象编程语法上都进行了介绍,并且通过与其他主流编程语言的比较,帮助读者理解Go语言的设计动机。Go语言强调简单性,借鉴了C语言的设计哲学,但同时提供对并行编程的原生支持。 Go...
Tutorial: 提供了一个快速入门指南,介绍了如何安装和配置 Go 开发环境,以及如何编写、编译和运行 Go 程序。 Basic Data Types: 讲解了 Go 语言的基本数据类型,包括整数、浮点数、布尔值、字符串等,并介绍了类型...
Go是什么,Golang,Go语言的环境搭建,Go语言编程详解,Go编程示例
Go语言基础语法 Go语言进阶特性 Go语言并发编程 Go语言网络编程 Go语言Web开发基础 Go语言Web框架实战 Go语言数据库交互 Go语言性能优化 ...Go语言在云原生环境的应用 Go语言安全编程 Go语言社区与最佳实践
### 配置Go语言环境变量 1. 安装完Go SDK后,你需要将Go的安装路径添加到系统的环境变量中。这通常涉及到编辑`Path`变量,并添加Go的bin目录。 2. 在Windows上,可以通过右键点击“我的电脑”或“计算机”,选择...
标题 "Go-PHP绑定至Go编程语言(Golang)" 指的是将PHP这门流行的Web开发语言与Go(Golang)编程语言进行交互的技术。Go语言以其高效、并发支持和简洁的语法在系统编程和微服务领域受到广泛关注,而PHP则在Web开发中...
#### 二、Go编程语言的安装与配置 ##### 2.1 准备工作 在开始安装Go之前,需要确保已经安装了一些必要的工具: - **Mercurial**: Go语言使用Mercurial作为版本控制系统。可以通过以下命令安装: ```bash sudo apt...
1. **C++编程语言**: C++是一种强大的、通用的、面向对象的编程语言,由Bjarne Stroustrup在C语言的基础上扩展开发。它支持过程化编程、面向对象编程以及泛型编程,广泛应用于系统软件、游戏开发、服务器端应用等...
Golang(Go语言)是一种开源的编程语言,它以其简洁的语法、高效的性能以及现代软件工程的最佳实践而受到广泛欢迎。在学习Golang时,可以重点关注以下几个方面: - **基础语法**:包括变量、数据类型、控制结构等...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、强类型编程语言。Go语言的设计目标是提高开发效率和程序性能,同时保持代码简洁、清晰和可读性强。它结合了C语言的高效与...
第一章介绍了Go语言的安装与配置。首先,讲解了系统需求,包括对不同操作系统(如FREEBSD, LINUX, MAC OS X, 和WINDOWS)的基本要求。接着,教程详细阐述了如何下载GO TOOLS,这是学习和开发Go语言的基础。在安装...
书中从如何获取和安装Go语言环境,以及如何建立和运行Go程序开始,逐步介绍了Go语言的语法、特性以及一些标准库,内置数据类型、语句和控制结构,然后讲解了如何在Go语言中进行面向对象编程,Go语言的并发特性,如何...
Go语言,也称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。自2009年发布以来,Go语言因其简洁的语法、高效的性能以及对并发编程的良好支持,受到了广大开发者的欢迎。...