go语言上手 | 青训营笔记

52 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第一篇笔记,记录一下开营前几课的关于go语言学习的收获和思考。我之前是学习的java语言,对C++和python有过了解,没有接触过go语言,但了解到go语言在高并发、云原生等领域有着广泛的应用,所以对go语言比较感兴趣。通过这几节课,也了解到了go语言具有如下特点:

  • 高性能、高并发

  • 丰富的标准库

  • 静态链接

  • 快速编译

  • 跨平台(交叉编译)

  • 自动垃圾回收 go语言不是传统的面向对象语言,看起来语法规则和python比较类似,上手也还比较简单,其中自动垃圾回收机制类似JVM中的垃圾回收机制,通过讲师的示例我也了解了基本go语法。其中有以下几个注意点:

  • Golang不能像其它诸如Python一样,可以导入包却不使用,如果你碰到 imported and not used这样的错误,将导入的包删除即可。如果你只是想让包执行 init() 函数而不导入其它内容,这可以在包名前加入下划线;

  • Go语言的数值类型包括几种不同大小的整形数、浮点数和复数。其中int和int32也是不同的类型,即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式的类型转换操作

  • fmt.Scanf("%d", &inp) 输入20,会再接受一个输入0.

    解决办法:改为fmt.Scanf("%d,%d,%d\r\n", &a, &b, &c),前提是你的os是win

  • 当我们希望通过命令行启动Golang程序,获取输入的各种形式参数时,该如何处理呢?

    [os.Args]:os.Args是一个string的切片,用来存储所有的命令行参数,包括go run main.go这部分,整体编译后实际是生成和运行的main.exe文件,所以第一个参数是main.exe

  • go中defer的用法:

    defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。 通过defer,我们可以在代码中优雅的关闭/清理代码中所使用的变量。 规则一 当defer被声明时,其参数就会被实时解析; 规则二 defer执行顺序为先进后出; 规则三 defer可以读取有名返回值; 参考:blog.csdn.net/huang_yong_…