Go语言

概述

  • Go 语言特色

    • 简洁、快速、安全
    • 并行、有趣、开源
    • 内存管理、数组安全、编译迅速
  • 应用

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

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

  • Go 语言最主要的特性

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

mac os安装与环境配置

安装包下载地址为

安装步骤:

  1. 首先下载安装包(go1.11.darwin-amd64.pkg)。

  2. 双击已下载的安装包,按照提示安装Go。

    在Mac上的安装路径是:/usr/local/go

    可以通过Contrl+shift+G输入/usr/local/go进入这个路径。

  1. 将安装目录加入到环境变量,命令如下:

    1
    export PATH=$PATH:/usr/local/go/bin

通过上面的步骤就完成了Go的安装。Go语言常用的编辑器是Goland。

环境配置

完成安装后,接下来是配置mac下的环境变量。这是最关键的。环境配置步骤如下:

  1. 打开终端(Terminal),敲入一下代码:

    1
    2
    3
    4
    5
    cd ~    #进入当前用户下的根目录

    ls -a # -a可将隐藏文件显示,可能会看到.bash_profile文件,若没有就自己创建

    vim .bash_profile #创建很简单
  2. 进入vim后,按下a才能编辑,输入一下代码:

    1
    2
    3
    4
    5
    export GOROOT=/usr/local/go

    export PATH=/usr/local/go/bin:$PATH

    export GOPATH=go代码默认存放路径

    解释一下含义:

    GOROOT就是pkg包默认安装到的地方,从官网上也可以看到,Go的pkg默认安装路径是/usr/local/go

    PATH很重要,系统自带的源码要运行必须有这个路径,默认安装路径时,在/usr/local/go/bin

    GOPATH可以是用户任意喜欢的地方,放置自己写的go程序

    此时,.bash_profile文件编写完毕,按esc,敲入:wq,回车,搞定。

  3. 退回到终端后,敲入source .bash_profile 使编辑生效

    验证一下路径配置是否成功:echo $GOROOT ,就能看到/usr/local/go了。

    如果没有看到,再重启一下ternimal吧。

  4. 环境变量配置完成。

Go语言结构

  • Go 语言的基础组成有以下几个部分:

    • 包声明
    • 引入包
    • 函数
    • 变量
    • 语句 & 表达式
    • 注释
  • 编写有一个简单的go程序:main.go。

    1
    2
    3
    4
    5
    6
    7
    8
    package main

    import "fmt"

    func main() {
    /* 这是我的第一个简单的程序 */
    fmt.Println("Hello, World!")
    }
  • 在terminal下列输入命令,运行上述的代码。

    1
    2
    $ go run main.go
    // 输出:Hello, World!

程序解析:

  1. 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

  2. 下一行 import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素)。通过 import 关键字来导入其他非 main 包。

    可以通过 import 关键字单个导入:

    1
    2
    import "fmt"
    import "io"

    也可以同时导入多个:

    1
    2
    3
    4
    import {
    "fmt",
    "io"
    }

    使用 . 调用:

    package 别名:

    1
    2
    // 为fmt起别名为fmt2
    import fmt2 "fmt"

    省略调用(不建议使用):

    1
    2
    // 调用的时候只需要Println(),而不需要fmt.Println()
    import . "fmt"

    前面加个点表示省略调用,那么调用该模块里面的函数,可以不用写模块名称了:

    1
    2
    3
    4
    import . "fmt"
    func main (){
    Println("hello,world")
    }
  3. 下一行 func main() 是程序开始执行的函数。Go 程序是通过 package 来组织的。
    只有 package 名称为 main 的包可以包含 main 函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。一个可执行程序有且仅有一个 main 包

  4. 注释,在程序执行时将被忽略。主要分为单行注释和多行注释。其中多行注释也叫块注释,不可以嵌套使用,一般用于包的文档描述或注释成块的代码片段。

    1
    2
    3
    4
    5
    // 单行注释
    /*
    Author by 菜鸟教程
    我是多行注释
    */
  5. 下一行 fmt.Println(…) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。fmt 包是实现了格式化 IO(输入/输出)的函数。
    使用 fmt.Print(“hello, world\n”) 可以得到相同的结果。
    Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

  6. 当标识符(包括常量、变量、类型、函数名、结构字段等等)以开头字母的大小写来决定其是否能被外部包调用,具体如下:。

    函数名首字母小写即为 private /protected(此部分的内容有待商榷,发现网上的一些资料是不一致的):

    1
    func getId() {}
函数名首字母大写即为 public :

1
func Printf() {}

编辑器——Goland

Go常用的一个编辑器是Goland

Go框架 ——Gin

Gin是一个Golang 微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。

参考:

  1. 参考:

  2. Go 语言教程