Golang-C1-1
Contents
介绍
golang简介 Go语言是Google于2009年推出的一门新的系统编程语言。
特点
- 静态编译
- 垃圾回收
- 简洁的符号和语法
- 平坦的类型系统
- 基于CSP的并发模型
- 高效简单的工具链
作者

家谱

为什么选择go语言
- 编译型语言,运行速度快
- 静态编译没有依赖
- 天生支持并发,充分利用多核
- 大厂支持,有后台
helloword
|
|
|
|
c10k
|
|
并行和并发
- 并发(concurrent)不是并行(parallel)
- 一个例子,node.js具有并发的能力,但不能充分利用多核
- 写出一个能充分利用多核的程序需要很深的系统编程积淀
- 利益于优秀的设计,go可以轻松地写出跑满所有CPU的程序
go语言的应用
- Docker,正火热的容器化技术
- kubernetes,Google Borg的开源实现
- Etcd,类似zookeeper的高可用key-value存储
课程安排
- 基础部分
- 进阶部分
- 项目实战
基础知识
- 基础数据类型
- 复合数据类型
- 控制结构
- 函数,方法,接口
高级
- goroutine,channel
- 锁与条件竞争,如何进行debug
- 包管理,单测和benchmark
- 反射和cgo以及unsafe
项目实战
- 使用golang编写的监控系统
- agent采集
- kafka传输
- es存储,kibana展示
环境安装
https://dave.cheney.net/2017/04/26/understand-go-pointers-in-less-than-800-words-or-your-money-back
安装
- 下载地址(官网):https://golang.org/dl/
- 下载地址(国内):https://dl.gocn.io/
初始化环境
- GOROOT放置go的标准库
|
|
- GOPATH放置第三方代码和自己的工程
|
|
- PATH
|
|
安装atom
编译运行
- go build hello.go && ./hello
- go run hello.go
|
|
IDE选择
- atom配合go-plus插件(课程选择)
- sublime 配合gosublime插件
- LiteIDE专用IDE,没用过
- emacs+spacemacs配置(我在使用)
- Goland JetBrains出品
|
|
https://github.com/icexin/sockhttp
指针
补充
画图工具
|
|
gotrace
https://github.com/divan/gotrace
homework
完善http.go和c10k.go
要求:
-
编译通过
-
编译成windows, linux和mac三个平台的文件,有条件的可以运行观察结果。二进制不用提交
分析课堂上的代码,说明原因
|
|