走进Go语言基础语言 | 青训营笔记

44 阅读2分钟

1.1什么是GO语言

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

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

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

02 入门

2.1 开发环境-安装Golang-配置集成开发环境-基于云的开发环境
2.2 基础语法-Hello World
package main

import(
    "fmt"
)

func main(){
    fmt.Println("hello world")
}
2.2基础语法-变量
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)
    fmt.Println(g)
    
    const s string = "constant"
    cnost h = 500000000
    const i = 3e20 / h
    fmt.Println(s, h, math.Sin(h), math.Sin(i))
}
2.3基础语法-if else

与C/C++的区别为if后面没有() if 后必须接{}

2.4基础语法-循环

Go语言里只有for循环
for{}为死循环
for j := 7; j < 9; j++{}

2.5 基础语法-switch
a := 2
switch a{
    case 1:
        fmt.Println("one")
    case 2:
        fmt.Println("two")
    case 3, 4:
        fmt.Println("three or four")
    default:
        fmt.Ptintln("other")
    }

Go语言的switch不用break

2.6 基础语法-数组
var a [5]int
b := [5]int{1, 2, 3, 4, 5}
var twoD [2][3]int
2.7基础语法-切片(可变长度的数组)
s := make([]string, 3)
s[0] = "a”
s[1] = "b"
s[2] = "c"

s = append(s, "d")//[a b c d]
 c := make([]srting, len(s))
 copy(c, s)
2.8 基础语法-map
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m["unknow"])//0

delete(m, one)

m2 := map[string]int{"one":1, "two":2}
var m3 = map[string]int{"one":1, "two":2}
2.9 基础语法-range
nums := []int{2, 3, 4}
sum := 0
for i, num := range nums{
    sum += num
    if num == 2{
        fmt.Println("index:", i, "num:", num)//index:0 num:2
        }
}
2.10 基础语法-函数
func add(a, b int) int {
    return a + b
}

func exists(m map[string]string, k string)(v string, ok bool){
    v, ok = m[k]
    return v, ok
}
2.11 基础语法-指针
func add2(n int){
    n += 2
}

func add2ptr(n *int){
    *n += 2
}

func mian(){
    n := 5
    add2(n)
    fmt.Println(n) // 5
    add2ptr(&n)
    fmt.Println(n) // 7
}
2.12 基础语法-结构体
2.13 基础语法-结构体方法
2.14 基础语法-错误处理
2.15 基础语法-字符串操作
2.16 基础语法-字符串格式化
2.17 基础语法-JSON处理
2.18 基础语法-时间处理
2.19 基础语法-数字解析
2.20 基础语法-进程信息