初见go语言??领悟陶神的go代码之美

发布于:2021-07-21 22:23:20

  软件工程导论的个人项目的项目工程编写内容为??中小学数学卷子自动生成程序。功能要求为在命令行中通过提示实现账户的登录和三个不同难度的数学题目的生成。身边的同学一般使用的语言为C++或者java,当然也有人看了网上的140行python实现后使用python,而我的搭档使用的语言为go。


   首先来分析一下结对编程队友陶神的项目内容,项目一共由四个框架构成:


  


?????? Account:账户的初始化;


?????? Generator:公式的生成与检查;


?????? Interaction:命令行交互;


?????? Output:生成输出文件;


?????? 每一个框架下也有一到两个文件来分别实现对应的功能:


? ? ??


Account:


  account.go实现账户类的生成;


  init.go实现账户的初始化;


Generator:


? ? ?? formula_check.go实现对生成的算式进行检查(加入了对重复算式的检查);


  formula_generator.go实现生成算式(采用了生成随机数的概率,以40%的概率生成括号,其生成题目的方式也和我一致,三个函数对应小学,初中,高中,和我的不同处为直接生成算式而不是一位一位生成算式符号,这样更加高效);


  generator.go实现整合算式;


Interaction:


? ? ?? interaction.go实现生成登录命令行界面的交互;


Output:


? ? ?? create_file.go实现txt的生成;


  output_file.go实现算式写入txt文件;


?


?


  优点:


?????? 1、程序完美满足了项目的需求。


  2、 使用了go语言,增强了整体代码的架构感与层次感。


  3、 代码命名规范,包名与包内的文件的名称清晰明了,让阅读代码的人能一下子知道该文件所实现的功能。


  4、 代码中变量、函数、文件命的命名虽然受限于go语言的本身的要求,但是依旧结构清晰,让人心生愧疚。


  5、 代码中生成题目部分,相比于我一位一位生成算式和符号,然后生成算式再随机加入括号的方式,队友采用直接循环生成算式的方式更加的节省内存和时间,值得学*。


  6、 注释详尽,便于代码的阅读以及理解。


  7、 生成可执行文件,运行方便。


?


  代码需要改善的地方:


  用户交互的部分根据队友的能力可以做到更加的友好与完善。


  


?


?????? 看完队友的代码不仅产生了疑惑,go语言究竟好在哪里呢?


? ? ? 介绍: Go(又称为Golang),是一种静态强类型、编译型语言。Go语言语法与C相*,但是功能上却有下列优点:内存安全、垃圾回收、结构形态以及CSP-style并法计算。


  优势:


? ? ?? 1、Go语言可以直接编译生成机器码,不依赖其他库。


? ? ?? 2、 Go语言是静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。


? ? ?? 3、语言层面支持并法,这个就是Go语言最大的特色,天生的支持并法,可以充分利用多核,很容易的使用。虽然队友在这个代码里面没有使用到并发性,但是以后的内容中是可以使用的。


? ? ?? 4、内置runtime,支持垃圾回收,这一点和java比较的相似,是属于动态语言的特性之一。


? ? ?? 5、 简单易学,只要掌握C语言的,那么go上手就会非常的容易。并且内嵌支持C,go的代码里可以直接包含c代码。虽然关键字是25个,但是表达能力很强大,几乎支持大多数其他语言的特性:继承、重载、对象等。


? ? ?? 6、Go语言具有丰富的标准库,内置了大量的库,工具链,自动化格式代码,能够让团队review变得非常的简单,因此队友说如果用go来实现结对编程作业将会变得非常的容易。


?  


  在学*完队友的结构清晰明了的代码之后,我更加感受到了上面go语言的优点。其和c语言之间的连通性,读起来非常的清晰。相比于c与java,它更加的简洁,运行起来更加的快,内存消耗小。已经学*过C语言的我们,掌握学*它也是可以的。国外如Google、AWS、Cloudflare、CoreOS等,国内如七牛、阿里等都已经开始大规模使用Golang开发其云计算相关产品。跟着世界级巨人的脚步应该不至于走错方向,跟着队友陶神的脚步应该也是编码的正确之路。


?


?????? 最后附上go语言环境配置与安装博客:https://www.cnblogs.com/mstmdev/p/5454981.html


  


  


?



转载于:https://www.cnblogs.com/hnu-910/p/11551742.html

相关推荐

最新更新

猜你喜欢