(一)Golang的概述

Google创造Golang的原因:

  • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。【现有的编程语言;风格不统一;计算能力不够;处理大并发不够好】
  • 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度却很慢,同时还存在“内存泄漏”的一系列的困扰需要解决。

Golang的发展历程:

  • 2007年,谷歌工程师Rob Pike,Ken Thomson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
  • 2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。
  • 2015年8月19日,Go1.5版发布,本次更新中移除了“最后残余的C代码”。
  • 2017年2月17日,Go语言Go1.8版发布。
  • 2017年8月24日,Go语言Go1.9版发布。1.9.2版本
  • 2018年2月16日,Go语言Go1.10版发布。

Golang语言的特点:

Go语言保证了既能达到静态编译语言的安全和性能,又能达到动态语言开发维护的高效率;相当于Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

  • 从语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。
    举一个案例:
        //go 语言的指针的使用特点:
        func testPtr(num *int) {
                    *num=20
        }
  • 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
        package main //一个go文件需要在一个包;
        import “fmt”
        func sayok() {
                    //输出一句话
                    fmt.Println("ok")
        }
  • 垃圾回收机制,内存自动回收,不需要开发人员管理。
  • 天然支持大并发。
    1)从语言层面支持并发,实现简单;
    2)goroutine,轻量级线程,可实现大并发处理,高效利用多核;
    3)基于CPS并发模型(Communicating Sequential Processes)实现;
    4)吸收了管道通讯机制,形成Go语言特有的管道channel,通过管道可以实现不同的goroute之间的相互通信;
    5)函数可以返回多个值;举例:
        //写一个函数,实现同时返回 和,差;
        //go 函数支持返回多个值;
        func getSumAndSub(n1 int,n2 int) (int,int) {
                    sum := n1 + n2 //go 语言后面不要带分号;
                    sub := n1 - n2
                    return sum , sub
        }

    6)新的创新,比如切片 slice,延时执行 defer;

Golang的开发工具的介绍:

  • 工具介绍
    1)visual studio code(vscode)Microsoft产品:一个运行于Mac OS X,Windows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以智能提示,编译运行等功能;
    2)Sublime Text,可以免费试用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续使用,和正式注册版本没有任何区别;
    3)Vim,Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用;
    4)Emacs,Emacs传说中的神器,它不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境;
    5)Eclipse IDE工具,开源免费,并提供GoEclipse插件;
    6)LiteIDE, LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是国人开发的;
    7)JetBrains公司的产品:PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件;

猜你喜欢

转载自blog.51cto.com/13688462/2428452