什么是 Go?

Go 是一门支持并发和垃圾回收的编译型系统编程语言,目标是在静态编译语言的高性能和动态语言的高效开发之间取得平衡。

Go的主要特点有哪些?

  • 类型安全和内存安全
  • 以非常直观和极低代价的方案实现高并发
  • 高效的垃圾回收机制
  • 快速编译(同时解决C语言中头文件太多的问题)
  • 为多核计算机提供性能提升的方案
  • UTF-8编码支持

Go存在的价值是什么?

Go在谷歌:以软件工程为目的的语言设计

Go是记事本编程吗?

包括GoLand,VSCode,LiteIDE等众多知名IDE均已支持

Go 有哪些实际应用和资源?

  • 全球最大视频网站 YouTube(谷歌)
  • 七牛云储存以及旗下网盘服务(Q盘)
  • 爱好者开发的Go论坛及博客
  • 已用Go开发服务端的著名企业:谷歌、盛大、七牛、360

Go 发展成熟了吗?

Go 于 2009 年正式发布,已经被广泛用于云原生、后端服务、命令行工具和基础设施开发。它的标准库、工具链和生态都比较稳定,适合作为工程语言长期使用。

Go 的社区活跃吗?

Go 拥有活跃的国际社区和较完整的中文资料。学习时可以优先查看官方文档、标准库文档、Go Blog 以及主流开源项目源码。

安装Go语言

Go 环境变量与工作目录

Go 环境变量与 GOPATH 工作目录结构

早期 Go 项目通常放在 GOPATH/src 下,并约定有 3 个目录:

  • bin:存放编译后生成的可执行文件
  • pkg:存放编译后生成的包文件或缓存
  • src:存放项目源码

但现在 Go Modules 已经是主流项目管理方式,普通业务项目不需要手动放到 GOPATH/src 下。推荐在任意目录创建项目,并通过 go mod init 初始化模块:

1
2
3
mkdir hello-go
cd hello-go
go mod init example.com/hello-go

GOPATH 仍然存在,默认是 $HOME/go,主要用于保存模块缓存和通过 go install 安装的命令行工具。

Go 常用命令简介

在命令行或终端输入 go help 即可查看所有支持的命令。

  • go mod init:初始化模块,生成 go.mod
  • go get:在模块项目中添加或升级依赖
  • go install example.com/tool@latest:安装命令行工具
  • go run .:直接运行当前模块
  • go build:编译程序,检查是否有编译错误
  • gofmt -w .go fmt ./...:格式化源码
  • go test ./...:运行测试
  • go doc:查看文档

程序的整体结构

Go 程序入口、包声明和导入结构示意图

Go语言版”Hello world!”

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Println("Hello World!")
}

运行输出:Hello World!