一、 go语言介绍
1.认识go语言
- go语言(或 Golang)是Google在 2007 年开发的一种开源编程语言,于2009年11月开源,2012年发布go稳定版
- go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”
2. go的诞生
- Robert:曾协助制作Java的HotSport编译器,制作了chrome浏览器的js引擎V8
- Rob:google首席科学家,与ken共事多年,创出广泛实用的UTF-8编码
- Ken:1966年加入贝尔实验室,1983年图灵奖和美国国家技术奖得主,是Unix的原创者,发明了衍生出C的B语言
3. go的优势
- 做高并发有巨大的优势
- 开发简单,开发效率堪比python
- 运行效率高,很适合用作中央服务器的系统编程语言
- 是项目转型的首选语言,很多公司在用go重构代码
- 提供了海量并行的支持,很适合处理游戏相关数据
4. 使用go的公司
-
Google
https://github.com/kubernetes/kubernetes
-
Facebook
https://github.com/facebookgo
-
腾讯
-
百度
-
360开源日志系统
https://github.com/Qihoo360/poseidon
5. go适合做什么
- 服务端开发
- 分布式系统
- 网络编程
- 区块链开发
- 内存KV数据库,例如boltDB、levelDB
- 云平台,docker就是用go写的
二、 环境安装
1. 下载SDK
- 官网:https://golang.google.cn/ go
- 中文在线文档:https://studygolang.com/pkgdoc
百度网盘链接: 点击下载
2. 安装和配置SDK
-
windows使用.msi一键安装
-
配置环境变量
-
GOROOT,自动的,默认将go安装到C:/go
-
GOPATH,自定义的位置,理解为存放go代码的位置
创建并配置好GOPATH后,GOPATH目录还要创建3个子目录 -
bin
-
pkg
-
src 存放源码
3.sdk目录介绍
4. 安装开发工具
百度搜索goland进行下载,或者百度网盘下载
百度网盘链接: 点击下载
三、 第一个go程序
1. 编写go源文件
package main
import "fmt"
func main(){
fmt.Println("Go Lang,去浪吧,骚年!")
}
2. 代码分析
// go单行注释,与java和C++一样
/*
多行注释
*/
//每个go源代码开头是package声明,表示所属的包
//main代表可编译成二进制文件
package main
//导入格式化包,不用时会报错
import "fmt"
//main()主函数入口,不能带参数,不能定义返回值
//func声明函数的关键字
//前边大括号不能单起一行
func main() {
fmt.Println("Go Lang,去浪吧,骚年!")
}
四、 基础语法
1. 命名
- go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则
- 一个名字必须以一个字母或下划线开头,后面可以跟任意数量的字母、数字或下划线
- go区分大小写,hello Hello不同
- go语言中有25个关键字,不能用于自定义名字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
- 还有30多个预定义的名字,用于内建的常量、类型和函数
内建常量:
true false iota nil
内建类型:
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数:
make len cap new append copy close delete
complex real imag
panic recover
2. 变量
- 变量声明
- 变量初始化
- 变量赋值
- 匿名变量
1_代表特殊的变量名,作用是占位
3. 常量与枚举
- 声明常量
- iota常量生成器
- 枚举类型
package main
import "fmt"
// const:声明常量
const filename = "abcd.txt"
func consts() {
const (
filename = "abc.txt"
a, b = 3, 4
)
//就近原则
fmt.Println(filename)
}
//定义枚举类
func enums() {
const (
python = 0
golang = 1
java = 2
)
fmt.Println(python, golang, java)
}
//iota生成器
func enums2() {
const (
python = iota
golang
java
)
fmt.Println(python, golang, java)
}
//iota参与运算
func enums3() {
const (
// 1 << 0
// 1 * 2^0
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(b, kb, mb, gb, tb, pb)
}
func main() {
enums3()
}
4. 基本数据类型
- 带u是无符号
- byte short int long
- 整型
- 浮点型
- 布尔类型
- byte字符型
- 字符串
5. fmt包的使用
格式说明
输出
输入
6.类型别名
类型转换
- go必须显式转换
8. 运算符
- 算术运算符
- 关系运算符
- 逻辑运算符(与,或,非)