01.GO语言简介
语言特点
Go语言是一门并发支持、垃圾回收的编译型语言。
从某种意义上可以说是C的优化版本。
语言优势
- 静态编译语言,可以在编译的时候检查出来隐藏的大多数问题
- 不依赖其他库,部署就传一个文件即可。
- 高性能,高效并发。可以说就是为并发而生的。
- 内存安全,高效的垃圾回收 。
- 快速编译,相比较于C++。
- 简单易学 ,和C一样,语法极其简介。
- 内置格式化代码,代码格式一模一样 。
- 跨平台编译,可以直接包含C代码。
语言特点
- 保留但大幅度简化指针
- 多参数返回
- array slice map等内置基本数据结构
- 错误处理(panic recover error)
- interface
- Goroutine
- 多核处理和网络开发
- 部分函数式编程(匿名函数、闭包),反射,语言交互性
- Package即目录
go的哲学
连接:组件的耦合方式,组件是如何被连接起来的
组合:形成复合对象的基础。
go中文在线文档:https://studygolang.com/pkgdoc
02.环境安装
03.入门
别问,问就是hello world
//1) go语言以包作为管理单位
//2) 每个文件必须先声明包
//3) 程序必须有一个main包(重要)
package main
//fmt 包实现了格式化 IO(输入/输出)
import "fmt"
//入口函数
func main() { //左括号必须和函数名同行
//打印
//"hello go"打印到屏幕, Println()会自动换行
//调用函数,大部分都需要导入包
/*
这也是注释, 这是块注释
*/
fmt.Println("hello go") //go语言语句结尾是没有分号
//字符串输出到控制台 最后自动增加换行字符 \n
fmt.Println("hello itcast")
}
代码分析
- 每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。
包是Go语言里最基本的分发单位,也是依赖关系的体现。
所以叫包即目录。
- 要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。也就是入口函数。
- Go语言的main()函数不能带参数,也不能定义返回值。
- import语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。类似于C的include
- 所有Go函数以关键字func开头。一个常规的函数定义包含以下部分:
func 函数名(参数列表)(返回值列表) {
// 函数体
}
- Go程序的代码注释与C++保持一致,即同时支持以下两种用法:
/* 块注释 */
// 行注释
- Go程序并不要求开发者在每个语句后面加上分号表示语句结束,这是与C和C++的一个明显不同之处。
- 注意:强制左花括号{的放置位置,如果把左花括号{另起一行放置,这样做的结果是Go编译器报告编译错误。
写完了跑跑看
Go命令:
build:用于编译给定的代码包或Go语言源码文件及其依赖包。
clean:用于清除执行其他go命令后遗留的目录和文件。
doc:用于执行godoc命令以打印指定代码包。
env:用于打印Go语言环境信息。
fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。
fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。
get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。
list:用于显示给定代码包的信息。
run:用于编译并运行给定的命令源码文件。
install:编译包文件并编译整个程序。
test:用于测试给定的代码包。
tool:用于运行Go语言的特殊工具。
version:用于显示当前安装的Go语言的版本信息。
//运行
go run hello.go
//编译
go build hello.go
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。