go语言入门学习技术点

基本语法

  • 进制及转换 进制、进制转换、机器数和真值、原码、反码与补码
  • 变量与常量 变量概念、声明变量、常量及声明、特殊常量iota
  • 布尔型Bool
  • 数值型 整形、浮点型、byte、rune、uintptr
  • 字符串型
  • 复合类型(派生类型) 指针类型、数组类型、结构化类型、Channel类型、函数类型、切片类型、接口类型(interface)、Map类型
  • 运算符 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、运算符优先级
  • 分支循环
  • 条件语句 if语句、switch语句、select语句、循环语句、for语句、终止循环语句、break语句、continue语句


数组与切片

  • 数组 数组概念、数组声明与访问、声明数组与数组的初始化、访问数组元素、数组长度、遍历数组、多维数组、多维数组概念、多维数组的使用、数组类型
  • 切片 切片概念、切片语法、切片的定义、切片的初始化、修改切片内容
  • len()与cap()函数
  • 空切片
  • append()和copy()函数


集合Map

  • 集合Map概念
  • Map的使用 make()创建map、delete()函数删除map元素、ok-idiom获取元素、map的长度len(map)、map类型--引用类型
  • 字符串String
  • 字符串概念
  • 访问字符串元素


函数

  • 函数概念
  • 函数声明
  • 函数的使用
  • 函数多个返回值
  • 空白标识符
  • 函数可变参数
  • 参数传递类型 值传递、引用传递
  • 函数闭包 函数作为值、函数值使用步骤
  • Panic和Recover Panic、Recover


指针

  • 指针概念
  • 声明指针
  • 指针取值 获取指针地址、获取指针存储内容值
  • 空指针
  • 修改指针变量值
  • 函数参数指针传递
  • 指针数组
  • 指针的指针 指针的指针概念、作为函数参数传递


结构体

  • 结构体概念
  • 结构体定义
  • 结构体初始化
  • 访问结构体
  • 结构体指针
  • 结构体的匿名属性
  • 结构体嵌套
  • 提升字段
  • 结构体和字段导出
  • 结构体之间的比较
  • 结构体作为函数参数
  • make、new对结构体的操作


方法

  • 方法的定义
  • 方法的语法 方法的定义、相同方法名不同参数的定义及调用
  • 方法和函数 方法和函数的区别及比较
  • 变量作用域 局部变量、全局变量、形式参数、指针接收者
  • method继承
  • method重写


接口

  • 接口定义
  • 接口语法 结构体实现接口方法、interface值、interface函数参数、嵌入interface


OOP编程

  • 定义结构体和方法
  • New()函数替代构造函数
  • 组成(Coposition)替代继承(Inheritance) 嵌入结构体实现组成、嵌入结构体的切片
  • 多态性(Polymorphism)


错误处理

  • 错误定义
  • 错误编程演示
  • 错误类型标示 从错误中提取更多信息、断言结构字段、断言方法、直接比较
  • 自定义错误


defer语句

  • 延迟的概念
  • 延迟函数
  • 延迟方法
  • 延迟参数
  • 堆栈的延迟
  • 延迟的应用
  • defer函数的使用


包Package

  • 包的概念
  • 使用包的原因
  • main函数和main包 指定特定源文件属于包代码package、引入包的关键字import


并发Concurrency

  • 并发的概念 什么是并发性、什么是并行性、并发与并行的区别、进程、线程、协程、概念及定义、区别与不同点
  • Goroutines Goroutines的定义、Goroutines的优势、主Goroutines、Goroutines的使用方法、启动多个Goroutines
  • 通道channels 通道声明、通道数据的发送与接收、通道的阻塞性
  • 死锁 死锁的概念
  • 定向通道
  • 关闭通道
  • 缓冲通道


网络编程

  • 网络编程基础 通信协议、TCP/IP协议、网络接口层、网络层、传输层、应用层、网络七层模型、IP地址和端口、IP地址、IPV4地址、IPV6地址、端口
  • TCP编程 TCP协议的定义、什么是套接字、服务端编程、客户端编程
  • UDP编程 UDP简介、UDP服务端编程
  • net模块其他属性和函数


反射

  • 反射的来源 反射机制的定义、Java的反射机制
  • 反射的使用
  • 结构体 反射结构体解析属性和方法、反射结构体调用结构体方法、匿名结构体字段的处理、反射结构体修改结构体数据


其实初学Go语言首先弄懂基础语法和概念:基本数据类型、Struct、Array、map、Slice、指针、接口、map、内置函数,常用工具包等,还有接口和Slice的底层数据结构。这些不需要弄特别懂,能自己理解并自己描述我觉得就可以了,关键在实践和应用练习。


然后学文件操作、网络编程、锁、协程、对象序列化和反序列化,以及各种数据格式的封装等,这是进阶的内容。
学完上面两个阶段,就可以自己接触一些框架,然后搭建一个web服务器,来做一些测试和练习。Go各种框架都非常多了,github上star数过万的就有很多,这里列举几个:beego、iris、gin、echo、revel等。


在第三个阶段做的过程中,自然就接触到了数据库,io,操作系统,网络,存储优化、需要排很多雷。到这一步,已经能够模块化开发,应对正式的开发任务需求了。


当然,Go除了Goweb开发外,还有其他很多很多可以应用的领域,比如集群,微服务平台,容器技术,云平台,区块链等等都是Go可以大展身手的领域。后面这些,就相对要高阶点的内容了。

入门书籍推荐


《Go语言圣经》
初学者建议先从此书看起,此书是开始系统学习Go语言基础知识的绝佳书,对想从基础学习Go语言的同学有帮助,如果实在大学里面,看这个也是挺好的,比较系统。
Github的链接:https://github.com/golang-china/gopl-zh

《Go语言高级编程》
本书涵盖CGO、Go汇编语言、RPC实现、Web框架实现、分布式系统等高阶主题,针对Go语言有一定经验想深入了解Go语言各种高级用法的开发人员。
电子书链接如下:https://chai2010.cn/advanced-go-programming-book/

《Go2编程指南》
本书主要是讲Go2的新特性。
电子书链接如下:https://github.com/chai2010/go2-book

《Go Web 编程》
本书主要是讲Goweb开发的一些基础内容,也有电子书。
链接如下:https://www.kancloud.cn/kancloud/web-application-with-golang/44105
当然,如果想看一些实战开发的项目的话,可以看看我的视频专栏教程。
其他学习资料网站: