后端go基础 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
我是小白QAQ轻喷
HelloWorld
学习每个语言之前都是从一句HelloWorld开始 比较有仪式感
package main
import "fmt"
func main() {
fmt.Println("hello go")
}
个人感觉语言风格比较像是C和python
变量
目确学到的三种使用的方式
第一种:
var x int
类似于很多语言的类型 x
声明变量的方法
不过不同于其他语言,这里的变量类型放在后面
网上查询了一下go的变量类型
第二种:
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可以是字符串之类的除了数值的其他类型的变量
单纯的数组
感觉而其他类型的数组没什么区别
唯一的区别是声明时类型放在后面
可变数组Go里面叫切片
var a [5]int
是不可变固定的
切片:不声明长度的数组?
三种声明方法
var a []int=[]int{}//无初值长度为空
var a []int=[]int{1,2,3}//有初值长度可变
a:=make([]int,len)//使用make函数
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的用法?
可以用于遍历数组或者是特殊的数据结构
指针
上课老师说不常用
一般用于对于变量,函数内修改值
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里面有些像是类的定义
可以有自己的方法
写在外面的函数:
写成自己内部的方法