今天整理了一下第一节课的部分内容和上课的笔记,代码。第一节课主要是讲解go语言的来龙去脉,优势应用,还有基础语法等,我在老师的讲解下,也通过自己的上手实践,初步熟悉了一下go语言。
首先,go语言的优势有以下几点:
1.高性能,高并发
2.语法简单,学习曲线平缓 3.丰富的标准库
4.完善的工具箱
5.静态链接
6.快速编译
7.跨平台
8.垃圾回收
结合我自己上课学习java和python的经验,go语言其实兼具他们的长处,包括老师后面提到的c++的部分功能,我觉得丰富的库能够极大的便捷我们的开发过程,python的广泛应用和生态领域相当大程度来自第三方库。我们老师曾说java的跨平台属性是独一无二的,也是java生命力强大的最大保证之一,因为虚拟机的存在让java可以一次编译,多处运行,现在go语言也能够做到了。 但是go语言在学校中的使用似乎还很少,好像在业界的使用更广泛一些,希望我们学校和专业能够在后续开设go语言的课程,这样就能够跟上发展趋势。
在学习了包括变量类型,转换,循环语句,条件判断等知识后,第二小节老师让我们跟着视频完成三个小任务,在这个过程中,我发现自己还是低估了掌握go语言的难度,这个任务本身还是比较综合的。
第一个是猜数游戏,因为在java中写过类似的程序,我发现底层逻辑都是差不多的,但是go语言中似乎特别注意error的防微杜渐,都会创建err来预防出错。
fmt.Println("please input your number") reader := bufio.NewReader(os.Stdin) for { input, err := reader.ReadString('\n') if err != nil { fmt.Println("An error occured while reading input.please try again", err) return continue }
第二个是网络词典,刚好我最近在学爬虫,一些网络的知识例如包,headers,端口等等还是有所了解,这个小任务综合类多方面的内容,最后的实现代码量不大,但是最后的实现方式还是提醒了我要注意测试代码分离,在学校作业中我经常忘记这一点。
func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr,usage:simpleDict WORD
example: simpleDict hello
) os.Exit(1) } word := os.Args[1] query(word) }
最后是一个简单的SOCKS5,我第一遍跟着老师的步骤也没有实现,一方面是自己对于这方面的知识储备还不足,另一方面是代码细节不到位。我觉得代码学习不只是得到最终的结果就结束,阅读代码还要注意逐步测试,验证,分步骤的思想,以及用更简明的逻辑实现要求。