Golang 语言了解

Golang 是近期火起来的一门编程语言,它由 Google 维护。语言起源是 Google 首席软件工程师 Rob Pike 在 2007 受够了C++的煎熬,想创建语言取代C++。

语言特点

相比于其他语言都在做加法,持续地增加概念用法,它则是做减法,仅仅维持了必要的特性。这也是被人诟病的一项,习惯使用的概念没有了,想实现就得学习一些替代方案,用不同的写法和实现方法来实现。语言多多少少都会有自己的优缺点,它的特点如下:

优点

  • 强大的开发团队:Google 维护
  • 网络编程:http/websocket/tcp/udp
  • 并发编程:程序自身管理并发请求,通过协程能更加高效的使用服务器资源
  • 项目编译后可直接执行,部署简单,微服务支持友好

缺点

  • 语言还很年轻,还有很多地方未完善
  • 功能包没有统一的管理网站,软件包质量参差不齐
  • 太多公式化代码,固定的写法,没有其他选择

适合做的项目类型

  • 适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等
  • 广泛应用于Web 应用、API应用、下载应用等
  • 还适用于内存数据库和云平台领域:分布式系统、数据库代理器、中间件等,例如Etcd

学习重点及学习方法论

我的主语言是的 PHP 开发,用的最多的就是面向对象、程序三种基本结构(顺序、分支、循环)以及 composer 工具包。我的学习重点在于

  • 开发环境搭建
  • 面向对象、程序三种基本结构和工具包的写法
  • 打包发布
  • PHP 中没有的特性
    • 协程
    • 网络协议

对于 Go 语言可能是写法习惯问题,我并没有觉得 Go 很好上手,写一些功能时总是会出现模糊点,写起来磕磕碰碰的,让我十分难受。所以推荐打好写法基础再写。

  1. 基础特性用法写法,语法参考
  • Slices
  • Maps
  • make & new
  1. 项目示例练习
  1. 模块用法
  • 获取模块包
  • 当前已有的模块包
  • 模块用法

常用功能列表

  • 项目配置管理
  • 路由管理
  • 请求验证
  • 文件上传
  • 错误处理 && 日志
  • 数据库操作
    • 联表操作,多条件拼接
    • 分页
    • 增改删
  • 缓存
  • IO操作
  • 文本处理
    • 格式化 json、xml
  • 网络请求
  • 时间操作
    • 当前时间
    • 1天前、后,一周前、后获取
  • 加密
  • session & cookie
  • 测试
  • webSocket
  • 视图模板
  • 中间件
  • 数据类型转换
  • 指针类型使用
  • 协程

扩展资料

FQA

为什么那么多公司叫 PHP 转 Golang

小部分公司是因为公司业务要求跟不上,又不想使用 JAVA 这种长开发周期的语言来升级,而选择的一个折中的语言来替代 JAVA,减少升级时间和升级成本。更多的是跟风的技术负责人,不看实际情况,光盯着协程、微服务、分布式这些高级概念去转变。为了用而用结果也只是用 go 的写法把原本逻辑实现一遍,性能是提升了,但是只提升了一点,花费的人力成本性价比极低。

上面的话对于一些人可能有些大义凛然,但是这仅代表我个人的想法,做转化对我来说没有过多的意义,语言就是一个工具,做了仅仅是镀金罢了。真要用的话,可以用新功能或小功能上做尝试,自己花时间去学习才有必要。