后端go基础 | 青训营笔记

35 阅读3分钟

后端go基础 | 青训营笔记

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

我是小白QAQ轻喷

HelloWorld

学习每个语言之前都是从一句HelloWorld开始 比较有仪式感

package main
import "fmt"

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

个人感觉语言风格比较像是C和python

变量

目确学到的三种使用的方式

第一种:

var x int

类似于很多语言的类型 x声明变量的方法

不过不同于其他语言,这里的变量类型放在后面

网上查询了一下go的变量类型

Go变量类型 image.png

第二种:

var x=3.14

我们无需自己判断数据类型

变量会根据等号右方的类型

第三种:

x:=3.14

这里:=是固定用法不需要去声明就可以直接使用x

个人感觉像是第一到第二到第三不断简化(进化?

赋值

支持像是python一样的 x,y=1,2这种赋值方法

语法

每一行结束不需要分号

if-else

格式大概为

if 条件1 {//前括号必须要写在if同一行
    语句1
}else if 条件2 {
    语句2
}else{
}

1.条件不需要用()框起

2.即使是单条语句也需要用{}框起

3.前括号必须要写在if同一行QAQ写过一次因此报错

for循环-没有while只有for的世界

while(1){}的替代品:

for {//同理前括号只能在这应该是go句法特殊
}

常规写法

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

for{和其他语言一样 分别为初始·边界·累加器

for特殊写法

for i<666 {
}

个人认为设计者是将for和while添加到一起了

这个用法就像是while()判断括号里的条件进行循环一样

switch-心目中的switch

之前接触c的switch,有个很反人类的设计,每个分支如果不break会执行下一个分支,不禁在想,这个叫switch吗,case之后只能接数字

Go的switch

switch a{
    case a1:
        语句1
    case a2:
        语句2
       ·
       ·
    default:
}

a可以是任何类型,但是a1、a2需要和a同类型

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。

也就是说a可以是字符串之类的除了数值的其他类型的变量

单纯的数组

感觉而其他类型的数组没什么区别

唯一的区别是声明时类型放在后面

image.png

可变数组Go里面叫切片

var a [5]int是不可变固定的

切片:不声明长度的数组? 三种声明方法 var a []int=[]int{}//无初值长度为空

var a []int=[]int{1,2,3}//有初值长度可变

a:=make([]int,len)//使用make函数

【Go】初始Go切片(Slice)

map

声明

m:=make(map[键类型]值类型)m:=make(map[string]int) m:=map[string]int{"one":1,"two":2}

和切片声明方法有些相似

函数

func add(a int,b int) int{
}

类型值写后面

range

类似于python种in的用法?

可以用于遍历数组或者是特殊的数据结构

image.png

指针

上课老师说不常用

一般用于对于变量,函数内修改值

func setage(age *int){
    *age=18
}

结构体

type user struct{
    age int
    id int
}
func main(){
    a:=user{age:18,id:123}
    fmt.println(a.age,a.id)
}

结构体在go里面有些像是类的定义

可以有自己的方法

写在外面的函数:

image.png 写成自己内部的方法

image.png