go语言学习1 | 青训营笔记

50 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

Go语言特性

  1. 高性能、高并发

    goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,几十个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。

    reference: www.cnblogs.com/feixiangman…

  2. 语法简单

  3. 丰富的标准库

  4. 完整的工具链

  5. 静态编译

    可通过静态编译直接生成一个可执行文件,运行时不依赖其他库,部署方便,可伸缩能力强。

  6. 快速编译

    整个 Go 语言标准库的编译时间一般都在 20 秒以内,其它的常规项目也只需要半秒钟的时间来完成编译工作。这种闪电般的编译速度甚至比编译 C 语言或者 Fortran 更加快,使得编译这一环节不再成为在软件开发中困扰开发人员的问题。在这之前,动态语言将快速编译作为自身的一大亮点,像 C++ 那样的静态语言一般都有非常漫长的编译和链接工作。

  7. 跨平台

  8. 垃圾回收

    程序创建对象等引用类型实体时会在虚拟内存中分配给它们一块内存空间,如果该内存空间不再被任何引用变量引用时就成为需要被回收的垃圾。操作系统会记录一个进程运行时的所占用的内存、CPU和寄存器等资源,当进程结束后便由操作系统能够自动回收资源。但是对于一个运行较长时间的程序,如果使用完内存资源后没有及时释放就会造成内存泄漏甚至系统错误。

    golang的gc发展历史及详细介绍=> zhuanlan.zhihu.com/p/297177002

Go应用实践

  1. 猜谜游戏

    tag:输入输出 随机数

  2. 简单字典翻译

    tag: 网络 json 结构体

  3. socks5

    tag:输入输出流 go协程