温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

(一)Golang的概述

发布时间:2020-06-28 20:17:05 来源:网络 阅读:940 作者:运维路 栏目:编程语言

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插件;

工具选择:

  • 如何选择开发工具
    先选择用visual studio code或者vim文本编辑器本,到对Go语言有一定了解后,再使用Eclipse等IDE开发工具。
  • 为什么要这样选择
    1)更深刻的理解Go语言技术,培养代码感;
    2)有利于公司面试,现在写代码;

VSCode的安装和使用:

到下载地址选择适合自己系统的VSCode安装软件:
https://code.visualstudio.com/download
安装到D盘指定路径,安装即可使用。
在实际开发中,可以在windows开发好程序,然后部署到linux下。

下载SDK工具包:

  • 介绍SDK
    1)SDK的全程(Software Development Kit 软件开发工具包);
    2)SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包;
  • 下载SDK工具包
    Go语言的官网是:golang.org,但是访问很慢;这里选择中国的下载地址:Golang中国,https://golang.google.cn/
    我下载的是1.9.2版本的,选择windows的zip包,解压到指定路径即可使用。
  • windows下配置环境变量
    1)配置环境变量介绍
    根据windows系统在查找可执行程序的原理,可以将Go所在路径定义到环境变量中,让系统帮我们去找运行执行的程序,这样在任何目录下都可以执行go指令。
    2)配置环境变量
    GOROOT:指定SDK的安装路径D:\golang\go1.9.2.windows-amd64\go;
    Path:添加SDK的/bin目录;%GOROOT%\bin;
    GOPATH:工作目录,将来我们的go项目的工作路径D:\gocode;

    3)打开DOS命令测试

    C:\Users\Administrator>go version
    go version go1.9.2 windows/amd64
  • linux下配置环境变量

    vim /etc/profile
    export GOROOT=/opt/go
    export PATH=$PATH:$GOROOT/bin
    export GOPATH=$HOME/goproject
    source /etc/profile

    Go语言快速开发入门:

  • 需求
    要求开发一个hello.go程序,可以输出“hello,world”
  • 步骤
    (一)Golang的概述
    对上图的说明:
    1)go文件的后缀是 .go
    2)package main
    表示该hello.go文件所在的包是main,在go中,每个文件都必须归属于一个包。
    3)import “fmt”
    表示:引入一个包,包名为fmt,引入该包后,就可以使用fmt包的函数,比如:fmt.Println 打印
    4)func main() {
    }
    func是一个关键字,表示一个函数。
    main是函数名,是一个主函数,即我们程序的入口。
    5)fmt.Println("hello,world")
    表示调用fmt包的函数Println输出“hello,world”
  • 编译执行
    1)先编译再执行(两步较快)
    D:\gocode>go run hello.go
    hello,world
    D:\gocode>hello.exe
    hello,world

    2)编译执行(一步较慢)

    D:\gocode>hello.exe
    hello,world

    3)两种执行流程的方式区别
    ① 如果先编译生成了可执行文件,那么可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以执行;
    ② 如果是通过go run直接执行go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行;
    ③ 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

  • Go程序开发的注意事项
    1)Go源文件以“go”为扩展名;
    2)Go应用程序的执行入口是main()函数,这个类似于其他编程语言(比如java/C)
    3)Go语言严格区分大小写;
    4)Go语言由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性;
    5)Go编译器是一行行进行编译的,因此我们要一行就写一条语句,不能把多条语句写在同一行,否则报错;
    6)go语言定义的变量或者import的包如果没有使用到,代码不能编译通过;
    7)大括号都是成对出现的,缺一不可。

Go语言的转义字符(escape char):

1)\t:表示一个制表符,通常使用它排版;
2)\n:换行符;
3)\:表示一个\
4)\":表示一个"
5)\r:表示一个回车
(一)Golang的概述

D:\gocode>go run test01.go
张飞厉害雪山飞狐

案例:
(一)Golang的概述

D:\gocode>go run test02.go
姓名    年龄    籍贯    住址
john    12       河北    北京

Golang语言注释:

  • 行注释
    基本语法:
    // 注释内容
    举例:
    (一)Golang的概述
  • 块注释
    基本语法:
    /*
    注释内容
    */

    举例:
    (一)Golang的概述

  • 使用细节
    ① 对于行注释和块注释,被注释的文字,不会被Go编译器执行;
    ② 块注释里面不允许有块注释嵌套。

规范的代码风格:

  • 正确的注释和注释风格
    1)Go官方推荐使用行注释来注释整个方法和语句;
    2)Go的源代码就是使用行注释的。
  • 正确的缩进和空白
    1)使用tab键进行缩进;如果需要多行缩进,全选然后按shift+tab键向左移,然后按一次tab键实现缩进;
    2)使用gofmt进行格式化:gofmt -w 将格式化后的内容写入到文件中。
  • 运算符两边习惯加一个空格
    var num = 2 + 4 * 5
  • Go语言的代码风格
    正确的写法:
    func main() {
        fmt.Println("hello,world!")
    }

    错误的写法:

    func main() 
    {
        fmt.Println("hello,world!")
    }
  • 一行最长不超过80个字符,超过的使用换行展示,保持格式优雅
    运行输出还是一行:

    package main
    import "fmt"
    func main() {
        //fmt.Println("hello,world!")
        fmt.Println("helloworldhelloworldhelloworldhellow",
        "orldhelloworldhelloworldhelloworldhelloworldhell",
        "oworldhelloworldhelloworldhelloworldhelloworldhe",
        "lloworldhelloworldhelloworldhelloworldhelloworldh",
        "elloworldhelloworldhelloworld")
    }

    运行输出以分割的样式展示:

    package main
    import "fmt"
    func main() {
        //fmt.Println("hello,world!")
        fmt.Println("helloworldhelloworldhelloworldhellow\n",
        "orldhelloworldhelloworldhelloworldhelloworldhell\n",
        "oworldhelloworldhelloworldhelloworldhelloworldhe\n",
        "lloworldhelloworldhelloworldhelloworldhelloworldh\n",
        "elloworldhelloworldhelloworld")
    }

    Go语言管方指南:

  • Golang官网:(需要×××才能访问)
    https://golang.org
  • Golang中文官方指南
    https://tour.go-zh.org/welcome/1
  • 解释术语:API
    API:Application Program Interface=应用程序编程接口;
    就是我们Go语言中的各个包的各个函数。
  • Golang标准库API文档
    1)API是Golang提供的基本编程接口;
    2)Go语言提供了大量的标准库,因此google公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法;
    3)Golang中文网在线标准库文档:https://studygolang.com/pkgdoc
    4)Golang的包和源文件和函数的关系
    包和源文件一一对应,源文件里包含函数源代码。

本章知识回顾:

  • Go语言的SDK是什么?
    SDK就是软件开发工具包;我们做开发,首先需要先安装并配置好SDK。
  • Golang环境变量配置及其作用?
    GOROOT:指定go sdk安装目录;
    Path:指定SDK\bin目录,go.exe、godoc.exe、gofmt.exe;
    GOPATH:就是Golang工作目录,我们所有项目的源码都在这个目录下。
  • Golang程序的编写、编译、运行步骤是什么?能否一步执行?
    编写:就是写代码;
    编译:go build 源码 ==》生成一个二进制的可执行文件;
    运行:对可执行文件运行 xx.exe ./执行文件;go run 源码。
  • Golang程序编写的规则
    1)go文件的后缀是 .go;
    2)go程序区分大小写;
    3)go的语句后,不需要带分号;
    4)go定义的变量,或者import包,必须使用,如果没使用就会报错;
    5)go中,不要把多条语句放在同一行,否则报错;
    6)go中的大括号成对出现。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI