Golang介绍以及安装
Go语言
Google开源
编译形语言
21世纪的C语言
Go语言的特点
简单易并发
开发效率高
执行性能好
Go语言应用的领域
服务端开发
日志处理
文件系统
监控服务
容器虚拟化
Docker
k8s
Docker Swarm
存储
etcd
Tidb
Groupcache
Web开发
net/http
Gin
Echo
区块链
以太坊
fabric
开发环境
官网地址:
https://golang.google.cn/dl/
选择对应版本 下载 安装
(我这里是mac 所以使用brew下载)
brew install go
完成后使用 go env 查看版本
配置go路径环境
主要是GOROOT和GOPATH
GOROOT:就是go的安装环境
GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径。其实说通俗点就是你的go项目工作目录。通常情况下GOPATH包含三个目录:bin、pkg、src。
src目录下主要存放go的源文件
pkg目录存放编译好的库文件,主要是*.a文件;
bin目录主要存放可执行文件
注意:千万不要把GOPATH设置成go的安装路径,可以自己在用户目录下创建一个目录,例如mygo
一般安装好go之后,使用go env查看一下当前环境。此时显示出来的GOROOT就是你使用brew安装go的安装目录,这个路径要记下来。接下来要在bash_profile文件中进行配置。
Golang /Go调试工具delve
Windows or Linux
go get github.com/derekparker/delve/cmd/dlv
Mac使用brew下载
brew install go-delve/delve/delve
IDE下载 Goland
http://www.jetbrains.com/go/
下载后激活正常使用
Go语言的项目结构
-GOPATH
-src //目录下主要存放go的源文件
-网站域名/公司级别仓库域名
- 作者/机构
- 项目name
- 模块a
- 模块b
-bin // 目录主要存放可执行文件
-pkg //目录存放编译好的库文件,主要是*.a文件;
编译: 只需要编辑主文件即可 不需要编译包
cd /Project/pkg ## 在哪里编译 编译后的文件就在那里
go build ../src/xxxx/xxx.go
或指定编译后存放的地址
go build -o Project/pkg/name src/xxx/xxx.go ## -o 参数指定编译后存放的位置 最后的/name 指的是编译后生成的文件name 也可以不指定
*** 跨系统编译
Mac下编译Linux和Windows平台64位可执行程序需要设置
Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build;
Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build;
Linux下编译Mac和Windows平台64位可执行程序
Mac
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build;
Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build;
Windows下编译Mac和Linux平台64位可执行程序
Mac
SET CGO_ENABLED=0 // 禁用CGO
SET GOOS=darwin // 目标平台设定
SET GOARCH=amd64 // 64位系统
go build
Linux
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build
编译并移动至bin目录
go install
Go代码结构
package main //导包 main可执行文件 如果更换其他的name则不会执行 会生成一个.a文件供其他程序引入调用
import(
// go所有的功能都靠包的引入
"fmt" // 输出输出模块
)
func main(){ //主函数
fmt.Println("hello word") // Println 输出至终端
}
运行
IDE下
右击Run
终端下
cd至创建文件路径下
go run 文件name.go
Go强语言类型
创建函数传入参数以及返回值必须要指定类型例如
# 补充 声明的变量如果不使用会被强制删除
func add(a int, b int // 定义参数类型 ) int //定义返回值类型 {
var sum int // 定义变量类型
sum = a + b
return sum // 返回值
}
语言特性
1.垃圾回收
a.内存自动回收,再也不需要开发人员管理内存
b.开发人员专注业务时间,降低了心智负担
c.只需要new分配内存,不需要释放
2.天然并发
a.从语言层面支持并发,非常简单
b.goroute,轻量级线程,创建成千上万个goroute成为可能
c.基于CSP(Commuicating Sequential Process)模型实现
func main(){
go fmt.Println("hello")
}
3.channel
a.管道,类似unix/linux中的pipe
b.多个goroute之间通过channel进行通讯
c.支持任何类型
func main(){
pip3:=make(chan int,3) // make开辟空间 长度为3 且只能存int类型
pipe <- 1
pipe <- 2
}
4.多返回值
a.一个函数返回多个值
func calc(a int,b int)(int,int){ //(int,int) 定义返回值
sum:= a+ b
avg:= (a+b)/2
return sum,avg
}
补充: 解包到不需要的参数 使用 "_"接受则为省略
res,_ = calc(1,3)
res = 4
Golang介绍以及安装的更多相关文章
- Golang 介绍与安装
1.介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gola ...
- Golang学习系列:(一)介绍和安装
Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几 ...
- 微服务系列(二)GRPC的介绍与安装
微服务系列(二)GRPC的介绍与安装 1.GPRC简介 GRPC是Google公司基于Protobuf开发的跨语言的开源RPC框架.GRPC基于HTTP/2协议设计,可以基于一个HTTP/2链接提供多 ...
- 从零自学Hadoop(19):HBase介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...
- 从零自学Hadoop(14):Hive介绍及安装
阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 本系列已 ...
- Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)
本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...
- Bash on Windows 抢鲜测试 -- 介绍及安装
前言 微软在上周的Windows BUILD大会上宣布,WIN10将引入原生Bash,并将很快在技术预览版中推出. 如此一来,windows的命令行工具就不再只有cmd和powershell了,我们可 ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- Python介绍、安装、使用
Python介绍.安装.使用 搬运工:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python语言介绍 说到Python语言,就不得不说一下它的创始人Guido van Rossu ...
随机推荐
- AC3 exponent coding
1.overview AC-3编码的audio信号中的频率系数由浮点型数据表示,并将其归一化到0~1之间. transform coefficient由exponent和mantissa组成. 设tr ...
- codeforce 427 C. Checkposts(tarjan 强连通分量)
题目链接:http://codeforces.com/contest/427/problem/C 题目大意是有n个junctions,这些junctions之间有m条道路,两两相连,现在在juncti ...
- 第二十一篇 Linux中的环境变量简单介绍
环境变量之 PATH 定义解释器搜索用户执行命令的路径 获取PATH变量的值: echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/us ...
- C#中DataSet、SqlDataAdapter的使用-关于数据库操作
本文链接:https://blog.csdn.net/xubaifu1997/article/details/51816785 DataSet 表示数据在内存中的缓存. 我的理解是,在内存中的数据表, ...
- 概率DP hdu 3366 .
题意:一个人被困在一个城堡里,面前有n条路,他自己有m百万元,选择每一条路都有p概率通过,q概率遇到士兵,1-p-q概率道路不通:遇到士兵的话需要上交1百万,如果不够钱,则被杀死,问的是最优情况下多少 ...
- 第一struts2程序
今天学习了第一个struts2程序 第一步建立一个java web程序 第二步 加入jar包 第三步 添加两个jsp文件 login.jsp和result.jsp文件 login.jsp 在body部 ...
- 架构师必备技能指南:SaaS(软件即服务)架构设计
1.介绍 从计算机诞生开始,就伴随着计算机应用程序的演变.简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化.上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得 ...
- 金中宝POS
金中宝POS机刷卡到账时间:9:00-22:00 现代金控自选商户POS机注意事项 选择: 1 消费 T+1到账(下一个工作日到账) 选择: 2 订单支付 是实时到账! 一.金中宝POS机秒到时间:2 ...
- 利用单臂路由实现VLAN间的路由
实验4:利用单臂路由实现VLAN间的路由. 实验原理: 实验内容: 本实验模拟公司网络场景,路由器R1是公司的出口网关,员工PC通过接入层交换机(如S2和S3)接入公司网络,接入层交换机又通过汇聚交 ...
- STM32F030 启用内部晶振并配置系统时钟为48M
在文件 system_stm32f0xx.c 里的函数 static void SetSysClock(void) { if (HSEStatus == (uint32_t)0x01) // 存在外部 ...