【第六届字节跳动青训营·后端基础班】第一课第一节 Go语言基础语法之走进Go语言基础语法|青训营

57 阅读2分钟

一、Go语言简介

1.1 什么是Go语言

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台
  8. 垃圾回收

1.2 哪些公司在使用Go语言

image.png

1.3 字节跳动为什么全面拥抱Go语言

  1. 最初使用的Python,由于性能问题换成Go
  2. C++不太适合在线Web业务
  3. 早期团队非Java背景
  4. 性能比较好
  5. 部署简单、学习成本低
  6. 内部RPC和HTTP框架的推广

二、GO语言入门

2.1 开发环境

  • 安装Golang

image.png

  • 配置集成开发环境

image.png

  • 基于云的开发环境

image.png

配置开发开发环境可参考该视频:这里 (侵权删)

2.2 基础语法

  • Hello World
package main

import (
	"fmt"
)

func main(){
	fmt.Println("hello world")
}
  • 变量
package main

import (
	"fmt"
	"math"
)

func main() {
	var a = "initial"

	var b, c int = 1, 2

	var d = true

	var e float64

	f := float32(e)

	g := a + "foo"

	fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0

	fmt.Println(g) // initialapple

	const s string = "constant"

	const h = 500000000

	const i = 3e20 / h

	fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}


注:

  1. Go语言中字符串类型为内置类型.可以直接使用字符串相关的操作。
  2. Go语言中常量没有类型,会根据上下文自动确定类型。
  • if else
package main

import "fmt"

func main() {
	if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

	if 8%4 == 0 {
		fmt.Println("8 is divisible by 4")
	}

	if num := 9; num < 0 {
		fmt.Println(num, "is negative")
	} else if num < 10 {
		fmt.Println(num, "has 1 digit")
	} else {
		fmt.Println(num, "has multiple digits")
	}
}

注:

  1. if之后写条件不需要加括号,而且满足条件的if分支或else分支中满足条件的语句均需要写在{}中。
  • 循环
package main

import "fmt"

func main() {

	i := 1
	for {
		fmt.Println("loop")
		break
	}

	for j := 7; j < 9; j++ {
		fmt.Println(j)
	}

	for n := 0; n < 5; n++ {
		if n%2 == 0 {
			continue
		}
		fmt.Println(n)
	}
	for i <= 3 {
		fmt.Println(i)
		i = i + 1
	}
}

注:

  1. 单独一个for的循环结构,即循环条件始终成立,即为死循环。
  • switch
package main

import (
	"fmt"
	"time"
)

func main() {

	a := 2
	switch a {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
	case 3:
		fmt.Println("three")
	case 4, 5:
		fmt.Println("four or five")
	default:
		fmt.Println("other")
	}

	t := time.Now()
	switch {
	case t.Hour() < 12:
		fmt.Println("It's before noon")
	default:
		fmt.Println("It's after noon")
	}
}

注:

  1. Go语言中,switch后变量可不加括号。
  2. Go语言中,case后语句可不加break,自动执行完对应的一条语句后跳出switch语句。
  • 数组
package main

import "fmt"

func main() {

	var a [5]int
	a[4] = 100
	fmt.Println(a[4], len(a))

	b := [5]int{1, 2, 3, 4, 5}
	fmt.Println(b)

	var twoD [2][3]int
	for i := 0; i < 2; i++ {
		for j := 0; j < 3; j++ {
			twoD[i][j] = i + j
		}
	}
	fmt.Println("2d: ", twoD)
}

  • 切片

image.png

  • map

image.png

注:

  1. map中元素是完全无序的。
  • range

image.png

  • 函数

image.png

  • 指针

image.png

  • 结构体

image.png

  • 结构体方法

image.png

  • 错误处理

image.png

  • 字符串操作

image.png

  • 字符串格式化

image.png

  • JSON处理

image.png

  • 时间处理

image.png

  • 数字解析

image.png

  • 进程信息

image.png