Skip to content

Yeonon-Wyy/golang_learn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

《go语言圣经》学习记录

仓库包含了随书代码以及习题代码,习题并不会都做,但大部分应该是会做的

第一章小结

本章主要是快速熟悉go语言的基本语法以及编程环境、编程风格等,虽然涉及了不少 关键字、类型、内置库等,但只是简单的演示。对于有编程基础的同学来说,这一章 应该是比较顺畅的,困难的地方仅在于编程思维的切换。

我个人遇到困难的地方是在做习题1.12时,该习题的要求是从request中获取query field 来动态的设置lissajous服务的一些参数。看起来非常简单,但由于golang没有三元运算符, 所以对于query field为空的情况下,无法一行代码就解决了,并且strconv.Atoi函数还会 返回一个err,所以即使有三元运算符也无法一行代码解决。这里我想到的解决方法是用一个 函数去封装这个过程。

但仍然没有解决问题,golang的类型还是比较严格的,int类型的值无法和float等类型进行直接 运算,对于int和float类型之间的运算,需要先将int强转成float。当然这很正常,类型不一样嘛, 对于强类型语言来说,哪能让你随便搞。但是!如果变量声明成const,就不存在这样的问题了,就像 书中的示例程序那样。这是令我最迷惑的地方,希望在之后的学习过程中能找到答案吧。

第二章小结

本章主要内容是golang程序的基本结构以及常用关键字的介绍。对于有其他语言编程基础的程序员来说, 这章的内容应该是非常简单的,尤其是有C/C++基础的程序员,阅读本章应该说没有任何压力。

与C/C++区别比较大的部分大概有如下这些:

  1. new关键字。在golang中,new不是关键字,而是语法糖。所以new是可以被声明成变量名的。
  2. 包的概念。在golang中有类似Java的那种包的概念(C++里的namespace其实也类似包的概念)。但相比 Java来说,golang的包不是很好用。
  3. 指针。golang也存在指针,但不能像C++那样随意的操作指针(例如++移动指针),其基本概念和C/C++是一致的,即表示的是一个内存地址(通常是虚拟内存地址)
  4. 赋值。golang有多重赋值。
  5. 变量的声明。变量的声明比较有特点的就是短变量声明,很方便但只能在函数内部使用,外部一般需要用到var关键字来声明变量。

其他的例如作用域等和C/C++的基本是相同的,只要记住花括号包围起来的就是一个作用域就能快速判断变量的作用域了。不用太关心那些花里花哨的用法。

第三章小结

基本的数据类型,整形、浮点型、布尔型等都和其他语言差不太多,和C/C++非常相近。 最大的特点是常量const,在golang中,常量的声明如果没有明确指定类型,那么其实该常量是“无类型”的,可以在运行时隐式的转换成其他类型。这也解答了第一章小结中的疑问。

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages