精华内容
下载资源
问答
  • go语言适合做什么

    千次阅读 2020-06-10 12:40:32
    当需要性能的时候,就可以考虑golang

    当需要性能的时候,就可以考虑golang。可以做选择题,当有一个新需求的时候,PHP能不能轻松胜任?Java及其他寄生在JVM上的语言行不行?当答案是否的时候,这时就可以考虑golang了。

    golang,作为C语言的亲弟弟,肯(这是人名)在发明go的时候,就是因为在工作中使用C/C++遇到了各种问题,于是造出了go,用于替代C/C++,特别是在网络编程方面的工作。Google里有个golang小组,如果Google哪个部门遇到C++的问题,就会找golang小组,该小组负责帮助转到go。

    目前golang比较有名的案例,主要集中在系统编程,如docker、infuxDB。另外golang比较擅长的领域是网络编程,Web应用遇到性能瓶颈或者其他PHP、Java不便处理的异步编程需求,就可以考虑go。

    不应该考虑go语言的情况,如流量较低的web应用,如内部应用,如果你的网站现在PHP运行的很好,真心没必要折腾。

    go语言,除了性能非常好之外,它的招牌菜就是协程,非常擅长处理异步编程,可以同时(注意是同时)处理几万个请求,使用的只是一个进程+几个线程,而相对的Apache+PHP,使用的是进程,大量的系统资源,用在了业务无关的方面,即便异步处理使用的是线程模型,和协程相比也差很远。

    总之,近几年go语言兴起,还是因为很容易解决一些实际问题。如果你现在开发工作,做得好好的,就不要动。

    展开全文
  • go语言做什么

    千次阅读 2019-04-07 09:54:59
    一、执行性能 缩短API的响应时长,解决批量请求访问超时的问题。...而GO语言不一样,通过协程可以方便的实现API的并行处理,达到处理效率的最大化。 依赖Golang的高性能HTTP Server,提升系统吞吐能力,由PHP的数百...

    一、执行性能

    缩短API的响应时长,解决批量请求访问超时的问题。在Uwork的业务场景下,一次API批量请求,往往会涉及对另外接口服务的多次调用,而在之前的PHP实现模式下,要做到并行调用是非常困难的,串行处理却不能从根本上提高处理性能。而GO语言不一样,通过协程可以方便的实现API的并行处理,达到处理效率的最大化。 依赖Golang的高性能HTTP Server,提升系统吞吐能力,由PHP的数百级别提升到数千里甚至过万级别。

    二、开发效率

    GO语言使用起来简单、代码描述效率高、编码规范统一、上手快。 通过少量的代码,即可实现框架的标准化,并以统一的规范快速构建API业务逻辑。 能快速的构建各种通用组件和公共类库,进一步提升开发效率,实现特定场景下的功能量产。

    三、Go语言能做什么

    Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。
    鉴于Go语言的特点和设计的初衷,Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web 应用、API应用、下载应用等;除此之外,Go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。
    服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
    分布式系统、数据库代理器、中间件等,例如Etcd。
    网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用,而且Go内置的net/http包基本上把我们平常用到的网络功能都实现了。数据库操作,开发云平台,目前国外很多云平台在采用Go开发。

    四、国内外有哪些企业或项目使用Go语言

    Go发布之后,很多公司特别是云计算公司开始用Go重构他们的基础架构,很多都是直接采用Go进行了开发,最近热火朝天的Docker就是采用Go开发的。
    使用 Go 语言开发的开源项目非常多。早期的 Go 语言开源项目只是通过 Go 语言与传统项目进行C语言库绑定实现,例如 Qt、Sqlite 等;后期的很多项目都使用 Go 语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量使用 Go 语言原生开发项目的出现。
    五、云计算基础设施领域
    代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。

    六、基础软件

    代表项目:tidb、influxdb、cockroachdb等。微服务,代表项目:go-kit、micro、monzo bank的typhon、bilibili等。互联网基础设施,代表项目:以太坊、hyperledger等。采用Go的一些国外公司,如Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS等公司;采用Go开发的国内企业:如阿里云CDN、百度、小米、七牛、PingCAP、华为、金山软件、猎豹移动、饿了么等公司。
    Docker
    Docker 是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker 可以在一台物理服务器上快速运行一个或多个实例。基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。例如,启动一个 CentOS 操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。
    项目链接:
    https://github.com/docker/docker
    go语言
    Go 语言自己的早期源码使用C语言和汇编语言写成。从 Go 1.5 版本后,完全使用 Go 语言自身进行编写。Go 语言的源码对了解 Go 语言的底层调度有极大的参考意义,建议希望对 Go 语言有深入了解的读者读一读。
    项目链接:
    https://github.com/golang/go
    Kubernetes
    Google 公司开发的构建于 Docker 之上的容器调度服务,用户可以通过 Kubernetes 集群进行云端容器集群管理。
    项目链接:
    https://github.com/kubernetes/kubernetes
    etcd
    一款分布式、可靠的 KV 存储系统,可以快速进行云配置。
    项目链接:
    https://github.com/coreos/etcd
    beego
    beego 是一个类似 Python的 Tornado 框架,采用了 RESTFul 的设计思路,使用 Go 语言编写的一个极轻量级、高可伸缩性和高性能的 Web 应用框架。
    项目链接:
    https://github.com/astaxie/beego
    martini
    一款快速构建模块化的 Web 应用的 Web 框架。
    项目链接:
    https://github.com/go-martini/martini
    codis
    国产的优秀分布式 Redis 解决方案。
    项目链接:
    https://github.com/CodisLabs/codis
    Facebook
    Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过https://github.com/facebookgo访问查看facebook开源的项目,比如著名的是平滑升级的grace。
    腾讯
    腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice 。
    百度
    目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个 http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend 。其次就是百度的消息系统。负责公司手百消息通讯系统服务器端开发及维护。
    京东
    京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。
    小米
    小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/ 。此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。
    360
    360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon.还有360的推送团队也在使用,他们还写了篇博文在Golang的官方博客上 https://blog.golang.org/qihoo。
    七牛云
    七牛云用了近50万行代码,来实现整个产品。七牛云存储产品网址:http://qiniu.com/。上线时间:2011-9-1。应用范围:整个产品(包括基础服务、Web端、统计平台、各类小工具等等)Go代码行数占比:99.9%日 PV:保密
    美团
    美团后台流量支撑程序。应用范围:支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能。
    滴滴
    基础服务平台。
    金山微看
    应用范围:服务接口,后台流程服务,消息系统,图片系统
    weico
    产品名:weico 3.0, 服务端所有代码都是用Go实现。
    仙侠道
    产品网址:仙侠道官网 - 心动游戏
    应用范围: 游戏服务端(通讯、逻辑、数据存储)
    快玩游戏
    网址:快玩小游戏,单机游戏,网页游戏,快玩游戏,快玩游戏盒
    应用范围:实时消息系统、用户认证、用户会话、统一统计接口
    盛大云CDN
    网址:盛大云计算
    应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等
    Bmob移动后端云服务平台
    产品网址:Bmob移动后端云服务平台
    应用范围:Restful API(使用Beego)、统计分析平台、常用服务如发邮件、队列异步处理、统计用户空间和接口请求
    群策
    网址:群策 - 统一团队沟通,高效完成工作
    应用范围:全系统
    BiddingX DSP广告投放系统
    网址:BiddingX_专业的DSP解决方案供应商
    应用范围:竞价投放、曝光统计、点击跳转
    街坊四邻
    网址:首页 - 街坊四邻
    应用范围:后台服务
    Leanote
    网址:Leanote
    Bearychat
    网址:BearyChat
    宅豆
    网址:宅豆网 - 自筑最美家,宅豆随你搭
    白板- 设计图讨论工具
    网址:白板
    实验楼
    网址:实验楼 - 第一家以实验为核心的IT在线教育平台
    新浪微博
    中间件和弹性调度用 Java 和 Go 编写,微博视频转码及存储服务用 Go 编写。
    爱奇艺
    VR 后台系统中间件,VR 端的 HTTP 接口。
    今日头条
    Nsq:Nsq 是由Go语言开发的高性能、高可用消息队列系统,性能非常高,每天能处理数十亿条的消息;
    Packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
    Skynet:分布式调度框架
    Doozer:分布式同步工具,类似ZooKeeper
    Heka:mazila开源的日志处理系统
    Cbfs:couchbase开源的分布式文件系统
    Tsuru:开源的PAAS平台,和SAE实现的功能一模一样
    Groupcache:memcahe作者写的用于Google下载系统的缓存系统
    God:类似redis的缓存系统,但是支持分布式和扩展性
    Gor:网络流量抓包和重放工具
    还有很多,比如阿里中间件、聚美优品、高升控股、探探、斗鱼直播、人人车、亚信、Udesk、方付通、招财猫、三一集团、美餐网等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。Go语言作为一门大型项目开发语言,在很多大公司相继使用,甚至完全转向Go开发。

    参考:https://www.jianshu.com/p/620519a3412a

    展开全文
  • Go 语言到底适合什么

    千次阅读 2020-08-26 09:31:56
    Go语言开发团队花了很长时间来解决当今软件开发人员...作为一门语言,Go不仅定义了能做什么,还定义了不能做什么Go语言的语法简洁到只有几个关键字,便于记忆。Go语言的编译器速度非常快,有时甚至会让人感觉不到在

    Go语言开发团队花了很长时间来解决当今软件开发人员面对的问题。开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速度,而Ruby和Python这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。

    在探索Go语言的过程中,读者会看到精心设计的特性以及简洁的语法。作为一门语言,Go不仅定义了能做什么,还定义了不能做什么。Go语言的语法简洁到只有几个关键字,便于记忆。Go语言的编译器速度非常快,有时甚至会让人感觉不到在编译。所以,Go开发者能显著减少等待项目构建的时间。因为Go语言内置并发机制,所以不用被迫使用特定的线程库,就能让软件扩展,使用更多的资源。Go语言的类型系统简单且高效,不需要为面向对象开发付出额外的心智,让开发者能专注于代码复用。Go语言还自带垃圾回收器,不需要用户自己管理内存。让我们快速浏览一下这些关键特性。

    1.1.1 开发速度

    编译一个大型的C或者C++项目所花费的时间甚至比去喝杯咖啡的时间还长。图1-1是XKCD中的一幅漫画,描述了在办公室里开小差的经典借口。

     

    图1-1 努力工作?(来自XKCD)

    Go语言使用了更加智能的编译器,并简化了解决依赖的算法,最终提供了更快的编译速度。编译Go程序时,编译器只会关注那些直接被引用的库,而不是像Java、C和C++那样,要遍历依赖链中所有依赖的库。因此,很多Go程序可以在1秒内编译完。在现代硬件上,编译整个Go语言的源码树只需要20秒。

    因为没有从编译代码到执行代码的中间过程,用动态语言编写应用程序可以快速看到输出。代价是,动态语言不提供静态语言提供的类型安全特性,不得不经常用大量的测试套件来避免在运行的时候出现类型错误这类bug。

    想象一下,使用类似JavaScript这种动态语言开发一个大型应用程序,有一个函数期望接收一个叫作ID的字段。这个参数应该是整数,是字符串,还是一个UUID?要想知道答案,只能去看源代码。可以尝试使用一个数字或者字符串来执行这个函数,看看会发生什么。在Go语言里,完全不用为这件事情操心,因为编译器就能帮用户捕获这种类型错误。

    1.1.2 并发

    作为程序员,要开发出能充分利用硬件资源的应用程序是一件很难的事情。现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。这些语言需要写大量的线程同步代码来利用多个核,很容易导致错误。

    Go语言对并发的支持是这门语言最重要的特性之一。goroutine很像线程,但是它占用的内存远少于线程,使用它需要的代码更少。通道(channel)是一种内置的数据结构,可以让用户在不同的goroutine之间同步发送具有类型的消息。这让编程模型更倾向于在goroutine之间发送消息,而不是让多个goroutine争夺同一个数据的使用权。让我们看看这些特性的细节。

    1.goroutine

    goroutine是可以与其他goroutine并行执行的函数,同时也会与主程序(程序的入口)并行执行。在其他编程语言中,你需要用线程来完成同样的事情,而在Go语言中会使用同一个线程来执行多个goroutine。例如,用户在写一个Web服务器,希望同时处理不同的Web请求,如果使用C或者Java,不得不写大量的额外代码来使用线程。在Go语言中,net/http库直接使用了内置的goroutine。每个接收到的请求都自动在其自己的goroutine里处理。goroutine使用的内存比线程更少,Go语言运行时会自动在配置的一组逻辑处理器上调度执行goroutine。每个逻辑处理器绑定到一个操作系统线程上(见图1-2)。这让用户的应用程序执行效率更高,而开发工作量显著减少。

     

    图1-2 在单一系统线程上执行多个goroutine

    如果想在执行一段代码的同时,并行去做另外一些事情,goroutine是很好的选择。下面是一个简单的例子:

    func log(msg string) {
        ...这里是一些记录日志的代码
    }
    
    // 代码里有些地方检测到了错误
    go log("发生了可怕的事情")

    关键字go是唯一需要去编写的代码,调度log函数作为独立的goroutine去运行,以便与其他goroutine并行执行。这意味着应用程序的其余部分会与记录日志并行执行,通常这种并行能让最终用户觉得性能更好。就像之前说的,goroutine占用的资源更少,所以常常能启动成千上万个goroutine。我们会在第6章更加深入地探讨goroutine和并发。

    2.通道

    通道是一种数据结构,可以让goroutine之间进行安全的数据通信。通道可以帮用户避免其他语言里常见的共享内存访问的问题。

    并发的最难的部分就是要确保其他并发运行的进程、线程或goroutine不会意外修改用户的数据。当不同的线程在没有同步保护的情况下修改同一个数据时,总会发生灾难。在其他语言中,如果使用全局变量或者共享内存,必须使用复杂的锁规则来防止对同一个变量的不同步修改。

    为了解决这个问题,通道提供了一种新模式,从而保证并发修改时的数据安全。通道a

     

    图1-3 使用通道在goroutine之间安全地发送数据

    图1-3中有3个goroutine,还有2个不带缓存的通道。第一个goroutine通过通道把数据传给已经在等待的第二个goroutine。在两个goroutine间传输数据是同步的,一旦传输完成,两个goroutine都会知道数据已经完成传输。当第二个goroutine利用这个数据完成其任务后,将这个数据传给第三个正在等待的goroutine。这次传输依旧是同步的,两个goroutine都会确认数据传输完成。这种在goroutine之间安全传输数据的方法不需要任何锁或者同步机制。

    需要强调的是,通道并不提供跨goroutine的数据访问保护机制。如果通过通道传输数据的一份副本,那么每个goroutine都持有一份副本,各自对自己的副本做修改是安全的。当传输的是指向数据的指针时,如果读和写是由不同的goroutine完成的,每个goroutine依旧需要额外的同步动作。

    1.1.3 Go语言的类型系统

    Go语言提供了灵活的、无继承的类型系统,无需降低运行性能就能最大程度上复用代码。这个类型系统依然支持面向对象开发,但避免了传统面向对象的问题。如果你曾经在复杂的Java和C++程序上花数周时间考虑如何抽象类和接口,你就能意识到Go语言的类型系统有多么简单。Go 开发者使用组合(composition)设计模式,只需简单地将一个类型嵌入到另一个类型,就能复用所有的功能。其他语言也能使用组合,但是不得不和继承绑在一起使用,结果使整个用法非常复杂,很难使用。在Go语言中,一个类型由其他更微小的类型组合而成,避免了传统的基于继承的模型。

    另外,Go语言还具有独特的接口实现机制,允许用户对行为进行建模,而不是对类型进行建模。在Go语言中,不需要声明某个类型实现了某个接口,编译器会判断一个类型的实例是否符合正在使用的接口。Go标准库里的很多接口都非常简单,只开放几个函数。从实践上讲,尤其对那些使用类似Java的面向对象语言的人来说,需要一些时间才能习惯这个特性。

    1.类型简单

    Go语言不仅有类似int和string这样的内置类型,还支持用户定义的类型。在Go语言中,用户定义的类型通常包含一组带类型的字段,用于存储数据。Go语言的用户定义的类型看起来和C语言的结构很像,用起来也很相似。不过Go语言的类型可以声明操作该类型数据的方法。传统语言使用继承来扩展结构——Client继承自User,User继承自Entity,Go语言与此不同,Go开发者构建更小的类型——Customer和Admin,然后把这些小类型组合成更大的类型。图1-4展示了继承和组合之间的不同。

     

    图1-4 继承和组合的对比

    2.Go接口对一组行为建模

    接口用于描述类型的行为。如果一个类型的实例实现了一个接口,意味着这个实例可以执行一组特定的行为。你甚至不需要去声明这个实例实现某个接口,只需要实现这组行为就好。其他的语言把这个特性叫作鸭子类型——如果它叫起来像鸭子,那它就可能是只鸭子。Go语言的接口也是这么做的。在Go语言中,如果一个类型实现了一个接口的所有方法,那么这个类型的实例就可以存储在这个接口类型的实例中,不需要额外声明。

    在类似Java这种严格的面向对象语言中,所有的设计都围绕接口展开。在编码前,用户经常不得不思考一个庞大的继承链。下面是一个Java接口的例子:

    interface User {
        public void login();
        public void logout();
    }

    在Java中要实现这个接口,要求用户的类必须满足User接口里的所有约束,并且显式声明这个类实现了这个接口。而Go语言的接口一般只会描述一个单一的动作。在Go语言中,最常使用的接口之一是io.Reader。这个接口提供了一个简单的方法,用来声明一个类型有数据可以读取。标准库内的其他函数都能理解这个接口。这个接口的定义如下:

    type Reader interface {
        Read(p []byte) (n int, err error)
    }

    为了实现io.Reader这个接口,你只需要实现一个Read方法,这个方法接受一个byte切片,返回一个整数和可能出现的错误。

    这和传统的面向对象编程语言的接口系统有本质的区别。Go语言的接口更小,只倾向于定义一个单一的动作。实际使用中,这更有利于使用组合来复用代码。用户几乎可以给所有包含数据的类型实现io.Reader接口,然后把这个类型的实例传给任意一个知道如何读取io.Reader的Go函数。

    Go语言的整个网络库都使用了io.Reader接口,这样可以将程序的功能和不同网络的实现分离。这样的接口用起来有趣、优雅且自由。文件、缓冲区、套接字以及其他的数据源都实现了io.Reader接口。使用同一个接口,可以高效地操作数据,而不用考虑到底数据来自哪里。

    1.1.4 内存管理

    不当的内存管理会导致程序崩溃或者内存泄漏,甚至让整个操作系统崩溃。Go语言拥有现代化的垃圾回收机制,能帮你解决这个难题。在其他系统语言(如C或者C++)中,使用内存前要先分配这段内存,而且使用完毕后要将其释放掉。哪怕只做错了一件事,都可能导致程序崩溃或者内存泄漏。可惜,追踪内存是否还被使用本身就是十分艰难的事情,而要想支持多线程和高并发,更是让这件事难上加难。虽然Go语言的垃圾回收会有一些额外的开销,但是编程时,能显著降低开发难度。Go语言把无趣的内存管理交给专业的编译器去做,而让程序员专注于更有趣的事情。

    本文摘自《Go语言实战》

     

    Go 语言结合了底层系统语言的能力以及现代语言的高级特性,旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角。本书同时关注语言的规范和实现,涉及的内容包括语法、类型系统、并发、管道、测试,以及其他一些主题。

    本书是写给有其他编程语言基础且有一定开发经验的、想学Go语言的中级开发者的。对于刚开始要学习Go语言和想要深入了解Go语言内部实现的人来说,本书都是最佳的选择。

    展开全文
  • Go适合做什么?为何这么多人偏爱Go语言

    万次阅读 多人点赞 2018-12-15 22:10:42
    Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比...哪些大公司在使用Go语言: 1、Goog...

    Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

    对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

    到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

    Go适合做什么?为何这么多人偏爱Go语言?

     

    哪些大公司在使用Go语言:

    1、Google

    这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。

    2、Facebook

    Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过 https://github.com/facebookgo 访问查看facebook开源的项目,比如著名的是平滑升级的grace。

    3、腾讯

    腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

    4、百度

    目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend

    5、阿里

    阿里巴巴具体的项目不太清楚,不过听说其系统部门、CDN等正在招Go方面的人。

    6、京东

    京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

    7、小米

    小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

    此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

    8、360

    360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon

    还有很多公司我们在这里就不一一列举了,从中我们也可知道Go语言的受欢迎程度。

    Go适合做什么?为何这么多人偏爱Go语言?

     

    为什么这么多人偏爱Go语言:

    除了上述业内大牛之外,Go语言也颇受国内很多云创业公司的喜爱,例如DaoCloud。那他们为什么会选择Go呢?与其他语言的应用相比,它有什么优点呢?

    1、学习曲线

    它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。

    2、效率

    Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。

    3、出身名门、血统纯正

    之所以说Go出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。而且从Go语言的发展态势来看,Google对它这个新的宠儿还是很看重的,Go自然有一个良好的发展前途。我们看看Go语言的主要创造者,血统纯正这点就可见端倪了。

    Go适合做什么?为何这么多人偏爱Go语言?

    Go强大的开发团队

    4、自由高效:组合的思想、无侵入式的接口

    Go语言可以说是开发效率和运行效率二者的完美融合,天生的并发编程支持。Go语言支持当前所有的编程范式,包括过程式编程、面向对象编程以及函数式编程。程序员们可以各取所需、自由组合、想怎么玩就怎么玩。

    5、强大的标准库

    这包括互联网应用、系统编程和网络编程。Go里面的标准库基本上已经是非常稳定了,特别是我这里提到的三个,网络层、系统层的库非常实用。

    6、部署方便:二进制文件、Copy部署

    我相信这一点是很多人选择Go的最大理由,因为部署太方便了,所以现在也有很多人用Go开发运维程序。

    7、简单的并发

    它包含了降低心智的并发和简易的数据同步,我觉得这是Go最大的特色。之所以写正确的并发、容错和可扩展的程序如此之难,是因为我们用了错误的工具和错误的抽象,Go可以说这一块做的相当简单。

    8、稳定性

    Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。那么为什么Go相比于其他程序会更稳定呢?这是因为Go提供了软件生命周期(开发、测试、部署、维护等等)的各个环节的工具,如go tool、gofmt、go test。

    这里引用知乎里一个同学对Go评论的话:最开始准备上线的时候其实心里挺忐忑,毕竟一旦出现故障,不仅黑锅得自己背,面子也上过不去啊。还好结果蛮漂亮,自上线后没出现过一次突发性BUG,降低运维难度的同时还减少了机器的负载。我相信这也是大多数人用了Go之后的感言。

    Go适合做什么?为何这么多人偏爱Go语言?

     

    Go适合做什么

    很多朋友可能知道Go语言的优势在哪,却不知道Go语言适合用于哪些地方。

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

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

    Go语言的就业前景:

    Go适合做什么?为何这么多人偏爱Go语言?

     

    Go适合做什么?为何这么多人偏爱Go语言?

     

    Go语言的安装:

    • 环境安装:

    安装包下载地址为:https://golang.org/dl/。

    如果打不开可以使用这个地址:https://golang.google.cn/dl/。

    各个系统对应的包名:

    Go适合做什么?为何这么多人偏爱Go语言?

     

    Go适合做什么?为何这么多人偏爱Go语言?

     

    • UNIX/Linux/Mac OS X, 和 FreeBSD 安装

    1、下载源码包:go1.4.linux-amd64.tar.gz。

    2、将下载的源码包解压至 /usr/local目录。

    Go适合做什么?为何这么多人偏爱Go语言?

     

    3、将 /usr/local/go/bin 目录添加至PATH环境变量:

    Go适合做什么?为何这么多人偏爱Go语言?

     

    注意:MAC 系统下你可以使用 .pkg 结尾的安装包直接双击来完成安装,安装目录在/usr/local/go/ 下。

    • Windows 系统下安装

    Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。

    默认情况下.msi文件会安装在 c:Go 目录下。你可以将 c:Goin 目录添加到 PATH 环境变量中。添加后你需要重启命令窗口才能生效。

    安装测试

    创建工作目录 C:>Go_WorkSpace。

    文件名: test.go,代码如下:

    Go适合做什么?为何这么多人偏爱Go语言?

     

    使用 go 命令执行以上代码输出结果如下:

    Go适合做什么?为何这么多人偏爱Go语言?

     

    链文

     

    展开全文
  • Go语言适合做什么

    万次阅读 2018-03-22 14:51:27
    Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员...
  • 一、我们为什么选择Go语言选择Go语言的原因可能会有很多,关于Go语言的特性、优势等,我们在之前的文档中也已经介绍了很多了。但是最主要的原因,应该是基于以下两方面的考虑:执行性能缩短API的响应时长,解决批量...
  • golang可以做什么

    千次阅读 2020-12-21 10:16:59
    golang,也就是我们熟知的go语言的全称。Go语言是谷歌发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go语言...
  • Go语言核心编程.pdf.zip

    2019-06-28 10:54:08
    接着围绕Go 语言的三大语言特性:类型系统、接口和并发展开论述,《Go语言核心编程》不单单介绍每个语言特性怎么使用,在章节的最后还对重要语言特性的底层实现原理了介绍。接着介绍反射这个高级语言特征。此外,...
  • 学习 Go 语言(Golang)

    2018-01-26 13:41:42
    学习 Go 语言(Golang),简单易懂的Go语言教程,让你分分钟学会GO语言
  • 04 Go语言实战开发一个WEB项目博客系统05 Go语言深度讲解(推荐 2018年1月更新)06 Go语言快速入门(2018年2月更新)07 Go语言协程流量统计(2018年3月更新)08 Go语言入门到实战视频教程(2018年3月更新)09 Go语言...
  • 作者展示了如何编写充分利用Go语言突破性的特性和惯用法的代码,以及Go语言在其他语言之上所的改进,并着重强调了Go语言的关键创新。 注重实践教学,每章都提供了多个经过精心设计的代码示例。 由国内**个核心服务...
  • go语言中,每个程序的开头都会有一个包的声明,而这个包的名字,除了main包以外,都要和文件夹的名字相同。在我们引入包时,首先go编译器会在GOROOT下面的src目录下找这个是不是系统定义的,然后如果不是的话,就...
  • 学习GO语言,开启GO语言的学习,让你精通GO语言
  • 手撕Go语言v1.1.pdf

    2021-02-02 20:04:33
    手撕Go语言v1.1.pdf
  • Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员...
  • go语言PDF---golang

    2018-11-14 17:12:48
    go语言完整文档PDF, 看完就可以开发了 快来学习golang
  • Go 语言是一种什么语言

    千次阅读 2019-05-15 21:46:57
    首先,我想说的是Go语言是一种让你入门了就不想放弃的语言。 Go语言是一个跟C语言,C++语言,Python,Java类似的计算机编程语言。 所谓编程语言,通俗的讲就是实现程序的标识,语法的集合。 Go语言是一门系统级...
  • 我们为什么GO语言区块链?

    千次阅读 2020-01-01 17:34:00
    作者:思想的苇草在区块链公链的开发圈子里,我们找到了一些流行的编程语言,有C++、Golang、Python和最近新起的Rust等等。我们稍微对比较有名的项目采用的编程语言做个统计,如下...
  • 第一节 golang devops项 目实战 - 为什么选择go语言 笔记本 golang 创建时间 2019/5/28 11:15 更新时间 2019/7/3 15:17 作者 152fypmm665 URL /post/why-we-need-golang.html 先来聊聊go有趣的历史 在google中大部分...
  • 主要介绍了Go语言导出内容到Excel的方法,涉及Go语言操作excel的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 论据 channel goroutine
  • go语言 代码整理

    2018-01-11 11:11:45
    go语言代码整理,很好很全,是很好的学习资料,共享给大家!
  • 上传一份Go语言语言相关的资源,文档内容为<<Go语言源码剖析>>,不是影印版本, 真实高清文字版本
  • Go语言圣经golang.pdf

    2020-04-24 17:59:18
    Go语言圣经golang.pdf
  • 尚硅谷Go语言(基础部分)。请下载的同学注意了,该部分包含的内容为概述,变量,运算符,程序流程控制及部分面试题
  • 许式伟的《go语言编程》里的一个小项目,我动手将其实现了,可运行。作为新手的一个练手小项目挺好的,这个项目的依赖管理用的是goland里的goroot、gopath。希望下载的朋友学习go语言一帆风顺!
  • 主要介绍了go语言执行windows下命令行的方法,实例分析了Go语言操作windows下命令行的技巧,需要的朋友可以参考下
  • 使用Go语言实现的分布式缓存,纯go语言项目,并非对已有的分布式缓存数据库的封装,内部使用map存储数据,并且实现了持久化与动态增删服务器节点的功能。
  • Go语言学习笔记.pdf

    2019-12-30 14:39:06
    Go简单易学,性能很好,且支持各类主流平台。已有大量项目采用Go编写,其中就包括Docker、terraform等明星作品,其开发和执行效率早已被证明。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 336,394
精华内容 134,557
关键字:

go语言适合做什么