Go初探

作者: 泥人冷风 | 来源:发表于2020-12-14 10:22 被阅读0次

    1 Go语言特性

    • 自动垃圾回收
    • 更丰富的内置类型
    • 函数多返回值
    • 错误处理
    • 匿名函数和闭包
    • 类型和接口
    • 并发编程
    • 反射
    • 语言交互性

    2语言结构

    • 包声明
    • 引入包
    • 函数
    • 变量
    • 语句 & 表达式
    • 注释
    package main
    
    import "fmt"
    
    func main() {
        /* Always Hello, World! */
        fmt.Println("Hello, World!")
    }
    
    

    2.1 解释:

      1. package main定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包。
        package main表示一个可独立执行的程序,每个Go应用程序都包含一个名为main的包
      1. import "fmt" 告诉编译器程序运行需要用fmt包
      1. func main()是程序开始执行的函数,main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有init()函数则会先执行该函数)。
      1. {}中"{"不可以单独放一行。
      1. 注释在程序执行时将被忽略。//单行注释,/..../多行注释也叫块注释,不可以嵌套使用,一般用于包的文档描述或注释成块的代码片段。
      1. fmt.Println(...)将字符串输出到控制台,并在最后自动增加换行字符\n。用fmt.Print("Hello, World!\n")可以得到相同的结果。


        VSCODE运行环境

    2.2 测试init

    除了main函数外,还有另外一个特殊的init函数,先于main函数执行,实现包级别的一些初始化操作。

    init函数的主要作用:

    • 初始化不能采用初始化表达式初始化的变量。
    • 程序运行前的注册。
    • 实现sync.Once功能。
    • 其他

    init函数的主要特点:

    • init函数先于main函数自动执行,不能被其他函数调用;
    • init函数没有输入参数、返回值;
    • 每个包可以有多个init函数;
    • 包的每个源文件也可以有多个init函数,这点比较特殊;
    • 同一个包的init执行顺序,golang没有明确定义,编程时要注意程序不要依赖这个执行顺序;
    • 不同包的init函数按照包导入的依赖关系决定执行顺序。

    golang程序初始化

    golang程序初始化先于main函数执行,由runtime进行初始化,顺序如下:

      1. 初始化导入的包(包的初始化顺序并不是按导入顺序执行的,runtime需要解析包依赖关系,没有依赖的包最先初始化,与变量初始化依赖关系类似);
    • 初始化包作用域的变量(该作用域的变量的初始化按照runtime解析变量依赖关系,没有依赖的变量最先初始化)
    package main
    
    import "fmt"
    
    func init() {
        // 初始化函数
        fmt.Println("初始化函数")
        
    }
    func main() {
        /* Always Hello, World! */
        fmt.Println("Hello, World!")
    }
    
    
    init测试
    初始化顺序:变量初始化->init()->main()

    3 开发环境配置

    3.1 IDE选择

    vscode(推荐免费)地址:https://code.visualstudio.com/
    goland(不推荐收费)地址:https://blog.jetbrains.com/go/

    3.2 安装Go 语言包

    下载地址:https://studygolang.com/dl
    根据自己系统版本,酌情选择

    3.3 配置

    • 不管是哪个系统,需要配置go安装环境到path环境变量里面。
    • goland只需要选择go对应的sdk配置即可,也就是把go安装的路径添加进去,使用安装的go环境进行编译,不需要安装任何额外插件。
    • vscode需要安装额外插件,在插件市场里面直接搜索go,随后进行安装即可,在安装的时候容易出现下载失败问题,此时需要更换为国内源,如下设置:
      要求Go版本>=1.13
      windows设置:
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    

    MacOS or Linux

    export GO111MODULE=on
    export GOPROXY=https://goproxy.cn
    

    参照: Windows下安装

    双击你下载的安装包(go1.13.4.windows-amd64.msi),一直点击“Next”即可,注意有一步要求选择安装路径,为了后面教程好说明请不要更改。

    然后点“Install”安装

    这个过程请等待

    点击“Finish”完成安装

    怎么来验证我们的安装是成功的呢?按windows键+R,输入:cmd回车

    在出现的命令行窗口输入:go version回车,这时会显示你当前安装的go版本,说明咱们已经安装成功了

    安装VSCode

    1、下载

    打开官网https://code.visualstudio.com/Download,进入下载页后,找到下载的地方如下图:

    image

    win10 64 bit点击第一处红箭头指向处下载,CentOS 64 bit点第二处箭头指向处下载

    2、windows下安装

    双击你下载的安装程序,然后按下图顺序一路点击

    安装VSCode中文包

    如果你和笔者一样英文很low,你可以选择安装中文语言包

    先可以点左侧第五个图标,或按快捷键Ctrl+Shift+X 打开Extensions,在搜索框里输入:language,中文(简体)的包,然后点“Install”安装,如下图

    image

    重新打开VSCode,这时已经是中文的啦

    image

    安装go插件

    打开Extensions,输入go,安装作者Microsoft的这个

    image

    安装vscode-go

    对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go
    这款插件的特性包括:

    Colorization 代码着彩色
    Completion Lists 代码自动完成(使用gocode)
    Snippets 代码片段
    Quick Info 快速提示信息(使用godef)
    Goto Definition 跳转到定义(使用godef)
    Find References 搜索参考引用(使用go-find-references)
    File outline 文件大纲(使用go-outline)
    Workspace symbol search 工作区符号搜索(使用 go-symbols)
    Rename 重命名(使用gorename)
    Build-on-save 保存构建(使用go build和go test)
    Format 代码格式化(使用goreturns或goimports或gofmt)
    Add Imports 添加引用(使用 gopkgs)
    Debugging 调试代码(使用delve)
    集成安装命令,拷贝到cmd窗口就可完成安装:
    go get -u -v github.com/nsf/gocode
    go get -u -v github.com/rogpeppe/godef
    go get -u -v github.com/golang/lint/golint
    go get -u -v github.com/lukehoban/go-find-references
    go get -u -v github.com/lukehoban/go-outline
    go get -u -v sourcegraph.com/sqs/goreturns
    go get -u -v golang.org/x/tools/cmd/gorename
    go get -u -v github.com/tpng/gopkgs
    go get -u -v github.com/newhook/go-symbols

    测试安装

    1、在GoPath中新建一个文件夹GoHello,打开VSCode打开这个文件夹,新建一个文件main.go,在文件中输入以下代码

    package main
     
    import (
        "fmt"
    )
     
    func main() {
        fmt.Println("hello world")
    }
    
    如果右下角有提示你有些插件需要更新,你可以不面要理会,或直接点更新,如图提示:Your version of go-outline appears to be out of date. Please update for an improved experience. image

    相关文章

      网友评论

          本文标题:Go初探

          本文链接:https://www.haomeiwen.com/subject/pkxvgktx.html