后端Go基础及实战案例 | 青训营笔记

91 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

Go语言

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

撰写风格

在Go中有几项规定,当不匹配以下规定时编译将会产生错误。

  1. 每行程序结束后不需要撰写分号(;)。
  2. 大括号({)不能够换行放置。
  3. if判断式和for循环不需要以小括号包覆起来。

Go亦有内置gofmt工具,能够自动整理代码多余的空白、变量名称对齐、并将对齐空格转换成Tab。

go常用命令

1 build flags

2 go build

3 go clean

4 go doc

5 go env

6 go fix

7 go fmt

8 go generate

9 go get

10 go install

11 go list

12 go mod

13 go run

14 go test

15 go version

16 go vet

golang开发 vscode快捷键

快捷键位置

File->Preferences->Keyboard Shortcuts

常用快捷键

  1. 行注释 ctrl + /
  2. 块注释 shift+alt+a (可以修改为ctrl+shift+/)
  3. ctrl+a 全选
  4. ctrl+c 复制
  5. ctrl+v 粘贴
  6. ctrl+shift+k 删除行
  7. ctrl+e查找文件
  8. ctrl+shift+p 打开设置命令行

golang标识符、关键字、命名规则

标识符

标识符的英文是identifier,通俗的讲,就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字。

标识符的组成

  1. 标识符由数字、字母和下划线(_)组成。123 abc _
  2. 只能以字母和下划线(_)开头。abc123 _sysVar 123abc
  3. 标识符区分大小写。 name Name NAME

golang变量

变量是计算机语言中能储存计算结果或能表示值的抽象概念。不同的变量保存的数据类型可能会不一样。

声明变量

Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用

声明变量的语法

var identifier type

var:声明变量关键字

identifier:变量名称

type:变量类型

go语言常量

常量,就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go程序中,常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

定义常量的语法

定义一个常量使用const关键字,语法格式如下:

const constantName [type]= value

const:定义常量关键字

constantName:常量名称

type:常量类型

value:常量的值

1.rand()函数要先设置随机种子,用时间戳来设置随机数种子。

func main() {
   maxNum := 100
   rand.Seed(time.Now().UnixNano())
   secretNumber := rand.Intn(maxNum)
   fmt.Println("The secret number is ", secretNumber)
}

2.去,删除io.Reader.ReadString换行符

假设您想使用io.Reader.ReadString从stdin中获取一个数字,并且希望将该数字转换为整数。 在使用strconv.Atoi将其转换为整数strconv.Atoi ,必须删除新行char。 你该怎么做?

`package main

import ( "bufio" "os" "strings" )

func main() { reader := bufio.NewReader(os.Stdin) text, _ := reader.ReadString('\n') text = strings.TrimSuffix(text, "\n") }`

3.string 转换为 int:Atoi()函数

func Atoi(s string) (int, error) 由于 string 可能无法转换为int,所以这个函数有两个返回值:

第一个返回值是转换成 int 的值

第二个返回值判断是否转换成功

// Atoi(): string -> int i,_ := strconv.Atoi(“3”) println(3 + i) // 6

// Atoi()转换失败 i,err := strconv.Atoi(“a”) if err != nil { println(“converted failed”) }