Go 语言上手-基础语言|青训营笔记

134 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

简介

什么是 Go 语言

Go 语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。

C 和 C++ 这类语言提供了很快的执行速度,而 Ruby 和 Python 更善于快速开发。Go 语言处于两者之间,不仅拥有高性能,还能快速开发。

很多大厂,如字节、腾讯、Google 等都在使用 Go 语言,越来越多的厂商开始拥抱 Go。 Go 语言在云计算、大数据和区块链等方面发展较好,拥有较多的占有率。

  • 开发速度:只关注那些直接被引用的库,编译快速。编译器帮助用户捕获类型错误。
  • 并发
    • goroutine:使用同一个线程去执行多个 goroutine,而 goroutine 使用的内存比线程更少,会自动在逻辑处理器上执行。
    • 通道:是一种数据结构,可以让 goroutine 之间进行安全的数据通信。

入门

开发环境

Go 官网,下载安装,也可以使用在线 playground。

配置.zshrc

export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

开发工具

可以直接使用 Goland,也可以使用 VSCode(需要下载 go插件,并安装支持库)

基础语法

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}
  • 第1行,Go 程序包
  • 第3行,使用 import 导入外部库
  • 第5-7行,像 C 语言一样,main 是程序执行入口

变量类型

整数、浮点数、布尔类型、字符串、字典、通道(chan)等

数组

在 Go 中是一个固定长度的数据类型,与其他语言类似。示例,声明 var array [5]int 长度为 5 的整数数组

array := [5]int{10,20,30,40,50}  // 包含初始化
array := [...]int{10,20,30}  // 用 ... 代替数组长度,元素个数决定长度

切片

切片有 3 个字段的数据结构,包含操作底层数组的元数据。分别是指向底层数组的指针、切片访问的元素个数(长度)和切片允许增长的元素个数(容量)。 示例,slice := make([]string, 5),长度容量均为 5。slice := make([]int, 3, 5) 长度为 3,容量为 5。

slice := make([]int, 3)
slice[0] = 0
slice[1] = 1
slice[2] = 2
slice = append(slice, 3)  // slice = [0,1,2,3]
slice[:2]  // [0,1]
slice[1:3]  // [1,2]

映射

是一个集合,可以使用类似处理数组和切片的方式迭代映射中的元素。及时使用同样的顺序保存键值对,每次迭代的顺序可能也不一样。

m := make(map[string]int)
m["one"] = 1
m["two"] = 2
if v, ok := m["three"]; ok {
    fmt.Println(v)  // 不执行,ok 为 false
}

类型系统

结构体,通过组合一系列固定且唯一的字段来声明。类型名和字段名首个字母是否大小写来决定是否包导出。

type User struct {
    Name string
    Age int
}
var u User  // 均使用零值来初始化
u1 := User{
    Name: "test",
    Age: 20,
}
func (u User) Hello(){  // 方法
    fmt.Printf("say hello: %s", u.Name)
}