Go-Golang学习总结笔记

Posted lady_killer9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go-Golang学习总结笔记相关的知识,希望对你有一定的参考价值。

目录

简介

资源

书籍

网站

视频

基础

安装

调试

代码规范

变量和常量

数据类型

基本数据类型

派生类型

运算符

流程控制

分支和循环

函数(引用类型)

面向对象编程

错误和异常

go命令

数据结构和算法

链表

栈和队列

查找

排序

提高

函数式编程

生成器与迭代器

标准库

输入输出

操作系统相关

时间和日期

高并发

反射

测试

加解密相关

网络编程

日志

设计模式


简介

开发者

  •  Ken Thompson(肯·汤普森):1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言,同时也是C语言的主要发明人。
  • Rob Pike(罗布-派克):曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。
  • Robert Griesefmer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8

发明Go的原因

  1. 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  2. 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。【现有的编程语言:1.风格不统一2.计算能力不够3.处理大并发不够好】
  3. 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。

Go的特性

  • 需要编译:.go文件----->go build---->编译为.exe文件------->运行.exe文件
  • 程序入口是main函数
  • 严格区分大小写
  • 定义的变量或导入的包没有用到就会编译出错(GoLand直接删除或点击编译运行时删除)

为什么转Go?

C做底层比较适合,Java做应用比较适合,Python做脚本,自动化,人工智能比较适合,而Go做微服务比较适合

个人比较喜欢Go,目前的感觉是Go是C/C++与Python的部分结合,取了优点,也砍掉了很多。

最重要的是,找了实习,需要使用Go语言:)。

资源

书籍

《Go语言圣经》

《Go语言实战》

网站

基础

go官方中文网

go官方中文网-包使用手册

菜鸟教程

C语言网

go语言中文网

golang系列

视频

尚硅谷-go语言核心编程

黑马Go语言基础+高级+进阶就业班

基础

安装

Go是安装的目前最新版:go1.16.3.windows-amd64.msi

IDE使用的GoLand 2019

调试

Go-解决低版本Goland调试问题:Version of Delve is too old for this version...

代码规范

Go-编码规范(注释,变量名等基本规则)

Go-代码安全指南(腾讯)

变量和常量

Go-变量与常量详解

数据类型

基本数据类型

数字和布尔类型(值类型)

Go-数字与布尔类型详解

字符和字符串(值类型)

Go-字符和字符串类型详解

类型转换

Go-基本数据类型转换详解

派生类型

数组array(值类型)

Go-数组类型详解

切片slice(引用类型)

Go-切片类型详解(遍历、内存、追加、插入、删除等)

映射map(引用类型)

Go-映射类型详解(遍历、增删改查、内存等)

指针pointer(引用类型)

Go-指针类型详解(空指针、指针的指针、函数形参指针等)

运算符

Go-运算符总结(算术、关系、逻辑、赋值、位运算符等)

流程控制

分支和循环

Go-分支和循环总结(if、else、switch、for、range、continue、break等)

函数(引用类型)

Go-函数详解(参数、返回值、init函数、匿名函数、defer)

Go-关键字defer、panic、recover详解

面向对象编程

结构体struct(值类型)

Go-结构体类型详解(声明、初始化、结构体指针、方法、序列化等)

接口interface(引用类型)

Go-接口类型详解(定义、实现、接口继承比较等)

类型断言

Go-动态类型与类型断言详解(含type-switch及全部代码)

面向对象特性

Go-面向对象编程详解(封装、继承、多态等)

错误和异常

Go-错误、异常处理详解

Go-包管理(管理工具对比及go mod的使用)

go命令

Go-常用命令go的使用(build、env、run、fmt等)

数据结构和算法

链表

单链表

Go-如何优雅的实现单链表?(含全部代码)

双链表

栈和队列

查找

排序

sort

提高

函数式编程

生成器与迭代器

标准库

输入输出

fmt、bufio、os

Go-输入输出总结及oj的输入输出

操作系统相关

os(文件操作)、bufio、ioutil

Go-文件目录操作分类详解(创建、打开、关闭、读取、写入、判断等)

runtime

syscall

path

时间和日期

time

高并发

Go-并发编程基础(goroutine、channel、select等)

Go-并发模式1(Basic Examples)

Go-并发模式2(Patterns)

反射

测试

testing

加解密相关

cypto

对称加密

Go-Des和3Des算法详解与代码

Go-AES算法详解与代码

非对称加密

Go-RSA加密解密详解与代码

Go-数字签名详解与Rsa数字签名代码

哈希算法

消息认证

数字签名

证书

pki

网络编程

日志

log、logrus

设计模式

创建型

设计模式-工厂方法模式(Go实现)

设计模式-简单工厂模式(Go实现)

未完待续...慢慢更...

以上是关于Go-Golang学习总结笔记的主要内容,如果未能解决你的问题,请参考以下文章

Python系列学习笔记——入门学习

Python系列学习笔记——入门学习

Golang学习笔记-基础数据类型

Golang学习笔记-基础数据类型

第五周 学习总结

2021-07-22学习笔记总结(grpc和client接口调用)