华人澳洲中文论坛

大龄顺序员,还要须要学习GO言语吗

[复制链接]

2023-2-21 15:38:15 58 0

从事开发曾经15年了,次要从事java言语开发,已有10余年,期间搞过一段时间python、PHP、ASP、C#、NodeJS,也说不出哪一种言语孰好孰坏吧,没有最佳的言语,只要最适合的言语。
比来因名目的需求,学习GO言语,筹备用GO言语开发,因为JAVA言语已积重难返,在接触新的言语时,不免心里会做一番对比,我这里说一下GO言语中的一些奇葩的设定或者使用不舒服之处:
(1)、在JAVA里,所有皆接口,习气了接口的灵敏和可扩展,我接触GO言语后,GO言语的函数是一等公民,接口属于鸭子类型,不外仍是喜爱从接口开始编程。


GO接口完成
(2)、GO言语的可见性分包内可见和包外可见两个粒度,假如变量/函数第一个字符是大写,则包内包外可见,拜服设计人奇葩的脑洞,用起来十分好受,假如变量是包内可见,我要改为包外可见,要把这个变量整个该一遍。


GO 可见度
(3)、GO言语异样处置机制有两种,一种是使用panic/recover,一种是经过函数可前往多个值的特性前往,民间保举使用第二种,然而第二种充斥着各种err的处置和前往,代码量成倍减少,比较之下,更喜爱java的try/catch或者间接抛出异样


GO使用panic/recover处置异样


GO使用前往error形式处置异样
(4)、GO包处置机制,同一个目录下包名是相反的,觉得粒度太大了,举个例子,utils目录下有两个工具类NumberUtils、DateUtils,都有同一个办法ToStr,因为同属于utils包名下,是不克不及完成两个同名办法的,没方法,只能在utils目录下,分别创立strings、date两个目录,或者把办法改为NumberToStr和DateToStr。
(5)、GO言语不反对注解,没有切面编程,觉得不太便利,也不简洁,例如要为已实现的业务模块添加日志记载功用,只能把日志记载的代码,协程一个通用的接口,加到每一个个办法外面去。
(6)、GO言语从言语级别反对协程编程,这也是GO言语比其余言语弱小的的地方,然而不反对住手,很不敌对,假如要住手协程,个别采取通道、context触发事情来住手协程,住手进程也有点费事;假如是处置梗阻事务的协程,例如衔接网络、打印机等等,只能设定超机会制完成了。


GO使用context住手协程

发表回复

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则

:
中级会员
:
论坛短信
:
未填写
:
未填写
:
未填写

主题37

帖子49

积分227

图文推荐

  • 撞穿学校栅栏害死十一岁男孩的司机不必坐牢

    一位女司机撞穿学校栅栏、害死了11岁男孩,被罚20

  • 全科医生正告花粉症时节正在好转

    全国各地的全科医生正告春季的开端标记着花粉症时

  • 新西兰总理:出世在新西兰的新纳粹Thomas S

    新西兰总理拉克森称新纳粹Thomas Sewell是坏人,

  • 新州护士和助产士承受暂时加薪3%的前提

    新州护士和助产士投票承受政府提出的暂时加薪3%以

  • 新纳粹份子如何利用“普通父母”的掩护在反

    星期天,新纳粹份子在反移民集会开端前大约一个小