zoukankan      html  css  js  c++  java
  • 对Golang的一些看法

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com
     
    话说当今世界各种语言和伪语言群雄并起,连Rob Pike, Ken Thompson和Robert Griesemer等几位大神也坐不住了,推出了云时代的Go语言,期望其能延续C语言在系统层开发的辉煌。
     
    Go语言的语法设计要求简单,从事过OO开发的人来看GO语言的语法,甚至简单到变态,比如Function称为Func, if不需要括号, 没有Class,以func和struct来组合实现,类似C#中的扩展方法。总体来说,延续了C的风格,并且吸收了一些现代语言的特点。
     
    Go语言有一套自动依赖管理机制,可以很方便的引入第三方包。缺点是:不能区分版本,一旦更新则相同GoPath下所有的项目都要使用最新版本。同时由于Go是强类型编译语言,要更新依赖就要重新整个项目重新编译发布,没有更新某个模块之说。如果你是要开发类似Framework这样的包,你发布了更新,则所有依赖于你的项目都要重新编译部署,这一点比较麻烦。
     
    Go语言支持函数多返回值,并且约定最后一个值为Error,理由是在离异常最近的地方最容易处理异常,不提倡像C#或者Java那样将异常层层传递出去。如果非要那样做,可以用panic, 但Go认为只有发生致命异常才可以这样做。
     
    Go语言中所有引入的包和定义的变量都必须要使用,未使用是不能编译的,从优化上说是有道理的,只是在debug的时候会麻烦一点。并且对代码风格也有严格的约定,对有个性化需求的同学可能不太能接受。
     
    Go语言可以方便的使用C代码,得益于此,大量高质量的C库丰富了Go的生态,可以很容易的将这些库包装为Go语言的包。
     
    以上吐槽以Go本身的设计哲学来看可能都不是问题,但是对于刚接触的同学看着有些难受,所以做Go项目的时候要转变思维,以Go的方式处理Go的问题。
  • 相关阅读:
    我的第一个Django项目
    MVC和MTV设计模式
    Linux下安装MySQL
    UEditor演变的迷你版编辑器
    PHP+Mysql+jQuery实现文件下载次数统计
    PHP+JQUEY+AJAX实现分页
    PHP高手之路(一)
    nginx别名alias支持PHP fastcgi解析
    免费的FRP--windows 内网使用Argo Tunnel打洞到 Cloudflare
    拾得他人闲话 DNS 的牙慧
  • 原文地址:https://www.cnblogs.com/zeeman/p/3968285.html
Copyright © 2011-2022 走看看