Web开发学习手记(一):Go语言

Web开发学习手记(一):Go语言

前言

加入冰岩作坊第一个新人任务就是学习Go并且用gin框架做一些小的实践,自然是要先学习一下Go的。

在此之前,我只对面向对象有了解,但Go作为一种非面向对象(更像C语言)的语言,它的设计模式等是我不熟悉的,实践的过程中也经常碰壁。

在这篇手记中,我主要记录下个人对Go语言的认识和一些需要注意的地方。由于能接触到的内容还很局限,这里只会提到有限的一部分。在学习的过程中也许会一直补充这个内容吧(咕咕咕警告)。

语法

  1. 不需要分号!分号只是用于分隔同一行的多条语句的,如果用换行分隔了,语句的末尾就不需要分号了。
  2. 变量声明的类型在变量名的后面!这是和很多语言都有区别的地方,Go的声明中类型应该放在名称后面,这里包括变量和函数。比如var a int
  3. 有指针类型,但比C的指针安全!在Go中,指针只是用于取地址用的,不能对它做加减操作,避免了加减越界的风险。
  4. 切片!大小可以改变的切片在使用时可以当做动态数组,而且可以类似Python那样取任意的一段出来作为一个新切片。
  5. 接口!虽然Go不是一个OO语言,但是却存在接口这种多态的特性。在Go中,接口是隐式实现的,即如果实现了接口中的所有方法,则认为实现了该接口。
  6. 类型转换与类型断言!在Go中可以做类型转换,与C的类型转换没有区别。但对于空接口interface{}来说它没有任何类型,需要用类型推断来对它进行转换,形如a.(int),返回两个值接口a的转换结果和推断是否可行。
  7. 错误处理和中断!在Go中一般会在可能产生错误的函数中把error作为返回值。出现了错误之后不一定会中断,可以手动使用panic等令其中断。这一点和Java的错误处理区别比较大。
  8. 并发!Go中的goroutine和channel真的很方便。虽然到现在为止还没有写过需要并发的程序,将来有机会可以实践一下。
  9. 命名规则!在Go里,一般使用大驼峰命名函数、变量等,局部变量会使用小驼峰。这与Java里到处小驼峰和C里到处下划线的规则区别很大。

开发环境和结构

  1. GOPATH!所有的项目都需要放在GOPATH中,不然会找不到导入的包。
  2. go mod!但是放在GOPATH里会很麻烦,于是可以使用go mod这种包管理器来帮你处理导入包的一系列问题,让你的项目可以放在任意位置。
  3. 更短的包名!Go的包名没有Java那样前面搞个很长的URL前缀,所以很短。
  4. GoLand!这里不做评价了。JetBrains牛逼!


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据