go后端基础 | 青训营笔记

86 阅读2分钟

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

Hello World

梦开始的地方 每一个语言都有一个“你好”

package main
import "fmt"

func main() {
	fmt.Println("hello go")
}

第一天主要是学习了go的基础语法 然后讲了三篇案例小项目 我是java出身的 不过每个语言的基础语法 大差不差

变量与常量

go 中的变量

var i int
var name = "Bob" go中的数据类型是在值的后面 通过var 这种自动识别类型 要不就是:= 这种赋值的方法 f := 4

go的常量

这个简单就是const关键字就好了

  • 显式类型定义: const b string = "abc"

  • 隐式类型定义: const b = "abc"

if-else与循环

go语言中if后面没有括号 而且后面必须加大括号 不过由于书写习惯 我大括号都会加 switch分支后面也没有括号 可以在case后面写条件分支 而且没有break语句

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")
}

for也是没有()

go中没有while 循环主要是靠for的

for i:=0;i<6;i++{
}

for中map 这些东西是可以和range一起用的 也就是方便遍历了

for key, value := range oldMap {
    newMap[key] = value
}

数组和切片

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

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

数组的话没什么特别的 和别的语言都差不多 切片的话和python中的有些类似 但是又不完全一样 我们可以通过make去创造数组 然后通过append去追加元素

s :=[] int {1,2,3 } 

直接初始化切片,[] 表示是切片类型, {1,2,3}  初始化值依次是 1,2,3,其 cap=len=3

map

m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m)           // map[one:1 two:2]
fmt.Println(len(m))      // 2
fmt.Println(m["one"])    // 1
fmt.Println(m["unknow"]) // 0

可以使用内建函数 make 也可以使用 map 关键字来定义 Map

指针

这里面的没有C++指针的那么多功能 仅仅用来赋值

结构体

类似于C++里面的结构体

error

u, err := findUser([]user{{"wang", "1024"}}, "wang")
if err != nil {
   fmt.Println(err)
   return
}
fmt.Println(u.name) // wang

nil就是null err也有的是panic进行打印输出的