前言:
本文帮助你快速上手Go语言
需要在有其他语言的基础上进行学习
一、Go语言简介
GO优势
- 极简单的部署方式
- 可直接编译成机器码
- 不依赖其他库
- 直接运行即可部署
- 静态类型语言
- 编译的时候检查出来隐藏的大多数问题
- 通过 go build 编译
- 语言层面的并发
- 天生的基因支持
- 充分利用多核
- 强大的标准库
- runtime系统调度机制
- 高效的GC垃圾回收
- 丰富的标准库
- 简单易学
- 仅25个关键字
- C语言简洁基因,内嵌C语法支持
- 面向对象特征(封装、继承、多态)
- 跨平台
GO适合做什么
- 云计算基础设施领域:docker、kubernetes、etcd、consul、cloudflare CDN
- 基础后端软件:tidb、influxdb、cockroachdb
- 微服务:go-kit、micro、monzo bank的typhon、bilibili等
- 互联网基础设施:以太坊、hyperledger
Go语言的知名产品:docker、kubernetes
GO的不足之处
- 包管理,大部分包都在Github上,即大部分包是第三方包
无泛化类型(目前1.18版本已添加泛化类型)- 所有Exception都用Error来处理(争议较大)
- 对C的降级处理,并非无缝,没有C降级到asm那么完美(序列化问题)
二、开发环境搭建
环境配置
go语言官网:https://go.dev/
官方文档:https://go.dev/doc/
-
方式一:下载安装包进行安装(推荐)
-
方式二:下载源码包,手动配置环境变量
IDE推荐
- Gland(收费):https://www.jetbrains.com.cn/go/
- VsCode(免费):https://code.visualstudio.com/
- vim + go插件(Linux系统推荐)
三、快速开始
HelloWorld,创建hello.go文件
package main //程序的包名
// 导包
import (
"fmt"
"time"
)
/* 多行注释方式,此导包方式与上面的方式相似,推荐上面的方式
import "fmt"
import "time"
*/
// main函数
func main() { //函数的左花括号必须一定与函数同行,这是Go语言的强制规定
// golang中的表达式末尾可以加分号; 也可以不加(推荐)
fmt.Println("hello GO!")
time.Sleep(1 * time.Second)
}
⭐️在目录下执行以下命令运行程序:
go run hello.go
⭐️也可以先build,生成二进制文件后,手动运行
go build hello.go
./hello
四、变量的声明方式
局部变量的四种声明方式
package main
import "fmt"
/*
四种变量的声明方式
*/
func main() {
// 方法一:声明一个变量,默认值是0
var a int
fmt.Println("a = ", a)
fmt.Printf("type of a = %T\n", a) // 打印变量a的类型
// 方法二:声明一个变量,初始化值
var b string = "我是字符串"
fmt.Println("b = ", b)
fmt.Printf("type of b = %T\n", b)
// 方式三:在初始化的时候,可以省去数据类型,通过值自动匹配当前的变量类型
var c = 200
fmt.Println("c = ", c)
fmt.Printf("type of c = %T\n", c)
// 方法四:(常用的方法) 省去var关键字,直接自动匹配
e := 3.14
fmt.Println("e = ", e)
fmt.Printf("type of e = %T\n", e)
}
全局变量
package main
import "fmt"
/*
参考声明局部变量的方法
声明全局变量:方法一、二、三
方法四不支持声明全局变量
*/
var global_a int = 100
func main() {
// 全局变量
fmt.Println("global_a = ", global_a)
fmt.Printf("type of globale_a = %T\n", global_a)
}
多变量声明方式
package main
import "fmt"
/*
多变量声明方式
*/
func main() {
// 声明多个变量
var xx, yy int = 11, 22
fmt.Println("xx = ", xx, "yy = ", yy)
var kk, ll = 33, "hello"
fmt.Println("kk = ", kk, "ll = ", ll)
// 多行多变量声明方式
var (
vv int = 100
jj bool = true
)
fmt.Println("vv = ", vv, "jj = ", jj)
}
更新中…
评论区