当前位置: 首页 > news >正文

go语言之行--简介与环境搭建

一、Go简介

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

Go 语言最主要的特性:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性
  • 易于部署

再说说我学习go的原因:

1.性能优越:这是个总所周知的特点,天生具备高并发性。

2.部署方便:一开始我只是想尝尝鲜,然后写了一点点代码,然后发现编译非常简单,同时部署时候就是二进制包(linux)或exe文件(windows),这对于做运维的人来说太方便了。

3.最近在学习kuberneters,其实现也是go语言,所以让我下定了学习go的决心。

二、GO与Python

作为python程序员,我对python当然也在熟悉不过了,总所周知由于GIL所问题导致速度较慢,当然go弥补了这个缺点,由于初学go还不了解,只能从他人之言了解到go与python对比:

https://studygolang.com/articles/3102

http://developer.51cto.com/art/201710/555200.htm

三、开发环境搭建

1.下载包:

安装包下载地址为:https://golang.org/dl/。

如果打不开可以使用这个地址:https://golang.google.cn/dl/

各个系统对应的包名:

操作系统包名
Windowsgo1.10.windows-amd64.msi
Linuxgo1.10.linux-amd64.tar.gz
Macgo1.10.darwin-amd64-osx10.8.pkg
FreeBSDgo1.10.freebsd-amd64.tar.gz

 

 

 

 

 

2.安装

windows

将下载好的包运行,一直点击下一步就行了,安装完成后打开cmd 输入go version如果返回正确的版本代表安装成功。

仅仅安装好msi是不够的,还需要配置一些东西:GOPATH

Go从1.1版本到1.7必须设置这个变量,而且不能和Go的安装目录一样。

这个目录用来存放Go源码,Go的可运行文件,以及相应的编译之后的包文件。

所以这个目录下面有三个子目录:src、bin、pkg

从go 1.8开始,GOPATH环境变量现在有一个默认值,如果它没有被设置。 它在Unix上默认为$HOME/go,在Windows上默认为%USERPROFILE%/go

如果你的是Unix(mac/linux)环境需要:

export GOPATH=/opt/src/go

 

Windows则需要新建一个环境变量名称叫做GOPATH,当然,go 的msi安装包安装完成后,己默认设置了GOPATH,我们只需要右击【此电脑】-【属性】-【高级系统设置】-【高级】-【环境变量】设置编辑就可以了

GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下。

以上 $GOPATH 目录约定有三个子目录:

  • src 存放源代码(比如:.go .c .h .s等)
  • pkg 编译后生成的文件(比如:.a)
  • bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

 

UNIX/Linux/Mac OS X, 和 FreeBSD 安装

以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法:

1、下载源码包:go1.103.linux-amd64.tar.gz。

2、将下载的源码包解压至 /usr/local目录。

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

3、将 /usr/local/go/bin 目录添加至PATH环境变量:

export PATH=$PATH:/usr/local/go/bin

ps:max下如果你安装了brew,你还可以通过brew进行安装

brew install go

或者

brew install golang

 

四、开始hello world

在你的上文的GOPATH下新建一个文件src/hello/hello.go,内容如下:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

切入到cmd使用go run 运行该文件

你也可以编译成可执行文件执行:

cmd下进入到文件所在目录,我的目录是C:\Users\17647\Desktop\go_work\src\hello,运行go build:

此时会你会发现目录多了.exe文件直接运行就可以了

 

转载于:https://www.cnblogs.com/wdliu/p/9165015.html

相关文章:

  • hive界面工具SQL Developer的安装;使用sql developer连接hive;使用sql developer连接mysql...
  • linux服务器性能查看
  • C# ASP.NET MVC 配置允许跨域访问
  • 运算符基础知识——比较运算符
  • node升级后,项目中的node-sass报错的问题
  • Mongodb数据库连接
  • ROS常用工具
  • Java基础随笔2
  • python3练习100题——026
  • Nodejs学习笔记(七)—Node.js + Express 构建网站简单示例
  • 求最短路径(Bellman-Ford算法与Dijkstra算法)
  • 49. Group Anagrams - LeetCode
  • 1 年经验 Java 求职面试题
  • 有赞11·11:全链路压测方案设计与实施详解
  • 输入处理与安全性
  • 2017前端实习生面试总结
  • angular2 简述
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ERLANG 网工修炼笔记 ---- UDP
  • flask接收请求并推入栈
  • maven工程打包jar以及java jar命令的classpath使用
  • spring学习第二天
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 当SetTimeout遇到了字符串
  • 规范化安全开发 KOA 手脚架
  • 讲清楚之javascript作用域
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 巧用 TypeScript (一)
  • 说说动画卡顿的解决方案
  • scrapy中间件源码分析及常用中间件大全
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #QT(TCP网络编程-服务端)
  • #微信小程序:微信小程序常见的配置传旨
  • ${ }的特别功能
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (小白学Java)Java简介和基本配置
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net中的集合
  • @基于大模型的旅游路线推荐方案
  • [20161101]rman备份与数据文件变化7.txt
  • [Android]使用Android打包Unity工程
  • [C# 开发技巧]实现属于自己的截图工具
  • [CTO札记]盛大文学公司名称对联
  • [Django 0-1] Core.Checks 模块
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [Git 1]基本操作与协同开发
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [hdu 4405] Aeroplane chess [概率DP 期望]