态度决定一切
风继续吹

简介:态度决定一切

粉丝

0

关注

0

从上家公司java转到go,工作内容还是主要业务逻辑代码,感觉Go写起来不是很顺畅(oop思想可能根深蒂固了,语言熟练度也是一个原因)。
个人感觉基于Go的特性还是做一些基础的服务器组件会很有优势。。写一般的业务代码简直别扭。。没泛型、if err != nil等等.. 当然好处就是很多东西要自己实现,没有可靠的轮子。。。大家都用GO做什么呢

2019-01-10 13:12 浏览 423 收藏 举报

分享你的真实观点和经验,通过汇编、洗稿的等方式拼凑的回答将会被折叠 完成
4个回答
  • 看似寻常最奇崛,成如容易却艰辛。
    独具匠心

    简介:看似寻常最奇崛,成如容易却艰辛。

    粉丝

    0

    关注

    0

    说说自己的感受。

    近来公司有一部分瓶颈业务迁移到 Go,陆陆续续写了一个月 Go,还不是很熟悉,但感觉就是你突然换了一辆车,车的性能很好,虽然不是很熟悉,但操作起来还是得心应手。


    错误机制是把双刃剑,是有点繁琐,但有它的好处。

    有个匿名同学说到的 KISS,十分赞同。之前在学习 Go 的时候,用 PHP、Java、Go 分别写了同样的功能对比,代码简洁 Go 完胜,当然我这个是比较片面的。

    单元测试好得不要不要的。

    现在很多 Go 的 lib 里面还是有设计模式的简单应用的,不是非得要像大型框架里面聚合了各种 DI、Delegation、 Singleton、Factory 才叫设计模式。


    能够针对业务,解决公司痛点,用得爽就好,我管它那么多。


    找工作难?你找工作只是靠一门编程语言吗?

    你的沟通技巧、你的工作效率、你的信息获取能力、你的知识面、你的填坑能力、你的管理能力等等综合起来,才是你的竞争力。

    你只会用锤子,你是不可能制造出一张凳子出来的。


    不要把你的未来全部压在一样东西上,然后以为这样东西有前途,你就会发光。

    评论 0
    2019-01-10 19:16:40 点赞   举报  
    取消 评论
  • 远方
    19
    没有后路,也许才有出路
    远方

    简介:没有后路,也许才有出路

    粉丝

    2

    关注

    0

    个人认为,go的诞生主要在应用层服务开发上代替c+python为主,解决python和c选择中的尴尬,由于开发效率比c有大幅提高,并发性能也比较好,所以一些java项目在微服务化时会重点考虑go,因为在微服务化场景中,go的成本比java可能更低.

    go本身应对高并发比较有优势,资源消耗和性能都不错,写mis的确不是go特别擅长的,但是也不是特别不适合.

    go的语法和结构设计更多是从C语言思想发展出来的,跟纯的OOP完全不一样,不能以纯OOP的思想去设计go程序

    还有个java转go会难受的一个很大原因是以前你用java的各种重框架堆起来帮你办事,现在面对轻框架或无框架,你可能要自己干很多底层的事情,至少也要知道怎么干,对开发者的底层知识有一定要求,这也会推动你往底层去研究学习.

    总体上go的程序更多追求轻量化,没有太多框架概念,语法的抽象表达能力也比较弱,不太适合在一个程序中堆砌太复杂的框架.

    我也是把以前java的业务转到go做的.

    首先是正好项目需要重写新版本,有机会重新选择编程语言.

    我们公司的软件比较多,一大部分是基于互联网的,也有一些计算密集的


    我选go的目的有几个:

    1. 硬件需求比java小很多,一台服务器随便跑上百个实例,我们公司内部用的oa(自己用go写的),gogs(一个用go写的开源git server和项目管理工具)已经转到了树莓派上运行,跑的很好(相当于5年前的手机cpu配置)
    2. 高并发程序开发更容易,java要开发高并发麻烦很多,内存吃的也更厉害.
    3. 部署更简单,一个主程序,一个配置文件,没有了,几乎不依赖操作系统环境.
    4. 和c语言结合更容易,有时候一些简单的c代码直接写在go里,对c非常友好
    5. 机器码程序,目标程序泄露后被反编译的风险较小

    缺点也是有的

    1. 反射是有,但是用多了性能就下来了,双刃剑吧,这个是我最纠结的,目前的选择是只在最必要的地方用,这也需要代码的耦合处理要格外小心
    2. 没有trycatch,错误,异常处理体系要重新思考和设计,用go的思维去处理错误,异常,善后,习惯了就还好
    3. 开发工具普遍较弱,调试没那么方便,没ide支持的重构很麻烦,跟java没法比
    4. 缺少一个好的原生script支持,比如java有groovy,c有lua,目前有个Q语言,但是做的还不够好

    5.轮子普遍比较简陋,这也跟go本身特性有关,大部分轮子只能叫lib

    评论 0
    2019-01-10 19:17:15 点赞   举报  
    取消 评论
  • 功夫
    7
    功夫熊猫家园
    功夫

    简介:功夫熊猫家园

    粉丝

    0

    关注

    0

    我喜欢Go语言的主要原因是代码简单,易读。以前用Java写Android,那代码长度就好像老太婆的裹脚布。读别人的代码很费劲。

    我最近写了一个Go语言的Android框架,能够实现用Go语言来写Android APP!

    当然,Android的API太过庞大,我这个只支持一些常用的函数和组件,不过我认为这些组件足够你写一些简单的APP了。如果有想用Go语言来写Android APP的

    评论 0
    2019-01-10 19:17:42 点赞   举报  
    取消 评论
  • 学以致用
    毛十三

    简介:学以致用

    粉丝

    0

    关注

    0

    Go语言崇尚的哲学是:

    • 最小心智负担原则
    • 最小特性
    • 最小惊异
    • 最少犯错既会

    Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。


    言归正传,Go到底适合干什么?

    作为服务器编程语言,Go语言很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。


    Go语言应用成功案例:

    • Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿条的消息;
    • Docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。
    • Packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等
    • Skynet:分布式调度框架
    • Doozer:分布式同步工具,类似ZooKeeper
    • Heka:mazila开源的日志处理系统
    • Cbfs:couchbase开源的分布式文件系统
    • Tsuru:开源的PAAS平台,和SAE实现的功能一模一样
    • Groupcache:memcahe作者写的用于Google下载系统的缓存系统
    • God:类似redis的缓存系统,但是支持分布式和扩展性
    • Gor:网络流量抓包和重放工具
    评论 0
    2019-01-10 19:18:50 点赞   举报  
    取消 评论