golang如何学习for语句?

这几年大火的Go语言该如何学习呢?这篇文章带你学习了解Go语言基础语法,Go语言web实战以及微服务和区块链方面的开发知识。

1. Go语言入门

1.1 简介

Go语言语法简单,保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言:Go = C + Python, 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。Go语言之所以被称为21世纪的C语言,不仅在于它精简的语法和高效的开发,更在于它具有原生支持和易于使用的高并发的特性。

与C语言相同的是Go语言也有指针,能直接操作内存。这也就意味着Go的运行速度是很快的。另外Go语言也能原生支持C语言,CGO模块也大受好评。

附上Go语言基础知识点思维导图

作为一款编译型语言,Go的程序只需要简单几行命令就能在windows下打包成二进制文件并上传到服务器运行,无需安装第三方的包依赖。并且内置runtime,支持垃圾回收。还有语言层面上支持并发,这个就是Go最大的特色。天生的支持并发,Go就是基因里面支持的并发。

下面两张图就很形象说明Go语言的并发。

将线程再分成更细的协程,使得中间等待时候更少,大大提高效率!

所以说,在这个数据量庞大的社会,使用go语言进行并发操作是必备且非常重要的。

1.2 学习资料与网站

Go常用编辑器:

  • Goland:https://www.jetbrains.com/go/download/
  • vscode:https://code.visualstudio.com/

Go基础编程:

  • Go语言中文文档:https://studygolang.com/pkgdoc
  • Go语言菜鸟教程:https://www.runoob.com/go/go-tutorial.html
  • Go语言基础教程:https://github.com/quii/learn-go-with-tests
  • Go Demo:https://gobyexample.com/

Go高级编程:

  • Go调度器GPM模型:https://www.zhihu.com/question/20862617/answer/27964865**
  • Go的内存布局:https://golang.org/ref/mem
  • Go指针高级:http://www.sohu.com/a/168217543_99930294
  • Go与C混合编程 CGO模块:https://github.com/golang/go/wiki/cgo
  • 垃圾自动回收机制 GC:https://blog.csdn.net/weixin_45304503/article/details/119729349
  • channel阻塞机制:https://blog.csdn.net/weixin_45304503/article/details/119359126

入门推荐书籍

  • 电子书《The Way To Go》:https://github.com/Unknwon/the-way-to-go_ZH_CN
  • 《Go语言核心编程》

  • 《Go语言编程设计》

  • 《Go语言并发编程实战》

2. Go进阶应用

2.1 Web 开发

2.1.1 简介

在我们学习Go语言的基础语法之后,我们可以做一个web网站。那我们用go语言的GIN框架来举例,Gin是一款轻量级的WEB框架。

特点:

  • 封装优雅,降低入门门槛。
  • API友好,支持许多出色的中间件。
  • 源码注释明确,降低阅读门槛
  • 快速灵活,容错方便。

功能概要:

  • RESTful 路由
  • 数据绑定
  • jwt,cors等中间件的使用
  • 会话控制

附上思维导图:

做一个web网站,除了需要Gin框架之外,我们还需要GORM框架。

GORM是Golang语言中一款性能极好的ORM库,Gin框架经常和Gorm搭配使用。

功能概览:

  • 关联(Has One, Has Many, Belongs To, Many To Many, 多态)
  • 钩子函数Hook(在创建/保存/更新/删除/查找之前或之后)
  • 预加载
  • 事务
  • 复合主键
  • 读写分离

附上思维导图:

2.1.2 学习资料及网站

Go中文社区:

GIN:

  • 源码:https://github.com/gin-gonic/gin
  • 中文文档:https://www.kancloud.cn/shuangdeyu/gin_book/949412
  • Gin框架知识点总结:https://blog.csdn.net/weixin_45304503/article/details/120381359

GORM:

  • 源码:https://github.com/go-gorm/gorm
  • 中文文档:https://learnku.com/docs/gorm/v2
  • Gorm框架知识点总结:https://blog.csdn.net/weixin_45304503/article/details/119986588

一些基于Gin+Gorm的应用:

  • Gin+Gorm 电子商场:https://github.com/congz666/cmall-go
  • Gin+Gorm 视频弹幕网站:https://github.com/CocaineCong/BiliBili
  • Gin+WebSocket 聊天室:https://github.com/hezhizheng/go-gin-chat
  • Gin+Vue+Admin 后台管理系统:https://github.com/flipped-aurora/gin-vue-admin

推荐书籍:

  • 《Go Web编程》

2.2 微服务

2.2.1 简介

将应用程序分解成一套较小的互连服务,将单体应用拆分为一系列服务,每个服务都轻量级单独部署,运行在自己的进程中,共同组件整个系统中。每个服务注重自己的核心能力的开发,微服务组件之间采用轻量级别通信方式进行通信,包括RESTful APi。那Go语言的微服务框架有哪些需要学习的呢?

  • Protobuf语法 / Protobuf序列化原理
  • 服务发现 / Consul内部原理
  • 节点服务集群
  • Docker 环境的搭建
  • RPC 简介及原理介绍
  • RPC 与 Protobuf 结合
  • gRPC 的使用
  • go-micro 框架的使用

2.2.2 学习资料以网站

gRPC:

  • 中文文档:http://doc.oschina.net/grpc?t=57966

go-micro:

  • 中文手册:https://www.kancloud.cn/linimbus/go-micro/529030

推荐书籍:

  • 《Go语言高并发与微服务实战》

  • 《Go微服务实战》

2.3 Cloud 云

2.3.1 简介

如今,我们已迎来了云原生时代,我们所有的web程序,app应用都是在云端运行。而云端就是编译型语言Go语言的主场。几行命令,就能快速部署到云端。我们所熟知的容器化工具Docker和编排工具K8S也是基于Go语言的。

对于开发人员来说,容器技术为应用的部署提供了沙盒环境,开发者可以在独立的容器运行和管理应用程序进程,Docker提供的抽象层使得开发人员之间可以保持开发环境相对的一致,因此Docker适合用于应用隔离,搭建沙箱环境。此外,由于Docker容器的轻量化,它也被适用于进行持续集成和持续部署。

我们用Docker举例子,容器化技术到底有什么优势呢?

  • 更高效的利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移
  • 更轻松的维护和扩展

Docker的核心架构

我们通常会编写Dockerfile对镜像进行build,然后在容器中跑。

  • 镜像: 一个镜像代表一个应用环境,他是一个只读的文件,如 mysql镜像,golang镜像,nginx镜像等
  • 容器: 镜像每次运行之后就是产生一个容器,就是正在运行的镜像,特点就是可读可写
  • 仓库:用来存放镜像的位置,类似于maven仓库,也是镜像下载和上传的位置
  • dockerFile:docker生成镜像配置文件,用来书写自定义镜像的一些配置
  • tar:一个对镜像打包的文件,日后可以还原成镜像

Dockerfile的解析过程

2.3.2 学习资料及网站

Docker:

  • 官网:https://www.docker.com/
  • 中文文档:https://www.kancloud.cn/jingyucloud/docker/216412

推荐书籍:

  • 《深入浅出Docker》

  • 《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》

2.4 BlockChain 区块链

2.4.1 简介

区块链是一个颠覆旧模式的新技术,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。最近的元宇宙大火,也带动了区块链的热度。

区块链应用最为著名的应用就是比特币,以太坊和超级账本。其中的以太坊和超级账本这两个区块链应用都基于Go语言。

特点:

  • 透明可信
  • 防篡改可追溯
  • 隐私安全保障
  • 系统高可靠性

  • 以太坊的智能合约是solidity,我们可以用Go语言去调用以太坊智能合约。
  • 超级账本的智能合约是Go语言,Go语言搭建超级账本Fabric项目的兼容性更好。

以下列举了以太坊和超级账本的区别

2.4.2 学习资料及网站

区块链这方面的学习资料相对比较少,建议多看书,多研究以下超级账本的源码。因为实际开发应用中,超级账本fabric是用的最多的。

以太坊

  • Go语言调用以太坊:https://blog.csdn.net/weixin_45304503/article/details/119430280
  • Go语言调用智能合约:https://blog.csdn.net/weixin_45304503/article/details/119466277

超级账本Fabric:

源码:https://github.com/hyperledger/fabric

官方文档:https://hyperledger-fabric.readthedocs.io/en/latest/

区块链推荐书籍:

  • 《区块链技术及应用》

  • 《Hyperledger Fabric技术内幕》

3. 总结

Go语言未来可期,Go语言的乐趣不止于此,我们一起加油吧!

本文分享自华为云社区《Golang从入门到进阶》,作者:小生凡一。




Golang 的 for 语句和其他语言的有相同的地方,也有不一样的地方。它存在如下三种基本形式:


for 的几种形式


// 和 C 语言的 for 类似

for init; condition; post { }

// 和 C 语言的 while 类似,所以,Go 中没有 while /do while

for condition { }

// 和 C 语言的 for(;;) 或 while(true) 类似,用于死循环

for { }


for .. range ..


除此之外,Go 还有类似一些语言中的 foreach 循环:for ... range ... 此时,range 后面只能是:array、slice、map 或 channel


for .. range .. 它也有几种形式


1. 对于 array、slice 和 map 来说,for 后面可以接收 1 个或 2 个值,第一个值是 索引或 key,第二个值是 value,我们可以只需要第一个值,如:


for i := range slice {}


或只需要第二个值:


for _, v := range slice {}


2. 如果 range 后面是 channel,则 for 后面只接收一个值,如:


for c := range ch {}


3. 还有一种是 Go 后面版本加的,即 for 后面可以不接受任何值,只是用来循环,如:


for range slice {}


Go 的语法变迁,可以看看此文:Go1到Go1.10的语法变迁 https://mp.weixin.qq.com/s/dRHLdt7_IfPmhGf_8jD9vQ


我们是专注 Go语言在国内推广的中文社区,欢迎关注我们。

展开阅读全文

页面更新:2024-02-18

标签:以太   账本   区块   合约   中文   语句   容器   语法   源码   框架   语言   书籍   文档   环境   简介   财经   网站

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top