Go语言基础| 青训营笔记

378 阅读3分钟

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

Go语言入门

什么是go语言

go语言比较简单,其标准库就已经足够支持我们架设一个后端程序,最基础的库是net/http go语言有比较完整的工具链,开发体验类似java go语言编译比较快, 很方便开发者进行调试 go语言类似java一样,能够跨平台 go语言和java,C#一样,拥有gc,让我们能够专注于逻辑,而非内存 go语言的性能比python更加好

基础语法

go项目有且只有一个main包,只有main包里的main函数会作为入口执行 输出输入的基础库是fmt

go的变量与其他编程语言类似, 整数,浮点,布尔,字符串等

变量的声明

var [var nname] (var type) = (value)
[var name] := [var value]

常量把var改成const即可

其他

if 是不需要添加括号
for{}for(;;){}是相等的

switch更加强大,可以是任何东西作为参数 甚至可以不在switch里写参数, 在case内使用条件作为参数,这个功能可以替代if语句

数组与切片

数组的声明var a [length]type 切片是长度可变的数组使用make([]type,length来创建一个默认长度为length的切片 切片类似List,拥有append函数,参考list.add()

append的使用 append是返会一个新的切片(slice),所以需要重新赋值

//声明s
s := make([]string,3)
var s = make([]string,3)
//函数的使用
s=append(s,"d)

取出slice的内容

println(s) //输出全部
println(s[2:5])//输入2到5的内容
println(s[:5])//0到5
println(s[2:])//2到max

map

map的创造

m:= make(map[key]value)

取出元素

r=m["something"] //取出key为something的值
r,hasValue=m["something" //同上,其中hasValue是是否含有这个key的bool

range

range配合for使用,类似foreach没什么好说的

指针

golang的指针,其实就是为了对传入的参数进行修改,类似C#的ref

func add(n *int){ //声明指针变量
*n+=2 //对指针变量赋值的时候需要加一个*号
}
add(&n)//对变量进行取指针操作

使用指针可以避免变量拷贝的开销!!!

结构体

go没有类的概念只有结构体的概念

结构体方法

func[结构体] 方法名字 [方法参数] (返回值){}
func(*user) checkPasswd(passwd string) bool{}
user.checkPasswd(xxx)

错误处理

golang的返回可以是多个参数, 错误是作为参数进行返回的. 结尾添加(err error)即可

检测的时候判断err!=nil即可判断是否有无错误

格式化字符串

字符串的格式化只可以在printf函数中使用 %v: 任意变量 %d 数字 %s 字符串 %.nf 打印长度为n的浮点

json

字符串json只需要 json.Marshal(结构体),而且保证结构体变量都是大写的即可

Marshal得到的是二进制的数据,输出的时候需要转化为string string(buf) 那么怎么得到小写的呢

type T sturct{
    FieldA int `json:field_a`
}

这样输出就会是小写的了

字符串转换

用到的包是strconv

ParseInt("1111",10,64)//内容,进制,精度(64,32)
ParsetFlot("111",64)//内容,精度
Itoa(32)//把32转化为"32"