GO语言基础语法 | 青训营笔记

107 阅读2分钟

记录一下Go的基础语法

变量

go是强类型语言,有两种声明变量方式

第一种是 var 变量名 type

第二种是用 := 赋值,根据值的类型自动推断

一个小例子

var a int = 1
b := 6

变量类型有 int,float32、flost64、bool、string

循环结构

go 的循环方式为for{}结构 这里for的循环的写法很灵活,既可以是c++中的经典for写法,也可以是while写法 一个小例子如下

i := 1
sum := 0
for i < 10 {
    sum += i
    i = i + 1
}

同时go还支持range的写法,这种写法在一些情况下会更加方便。 同时在range中会有两个值,第一个值为下标,第二个值为实际的值,如果不想用下标可以用_代替

选择结构

go的选择结构也是经典的if结构和switch结构 一个比较有意思的写法是

if num := 9; num < 10{}

switch有一点要提的就是不用显式地加break

基本数据结构

array

声明方式 var 变量名 [] type 比如

var a [5]int

变量 := []type{} 比如

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

slice

slice是很灵活、很方便的结构,实际上是一段内存的映射,可以像python一样有切片的方式,很灵活。 一个简单的例子如下

a := make([]string,0,3)

slice还有length和capacity两个属性。

map

map也是在一个非常经典常用的数据结构,在c++中对应的是map,主要是用于键值对的映射,可以用delete函数删除键值对,可以用下标访问的方式访问键值对 一个例子

m := make(map[string]int)
m["a"] = 1
delete(m,"a")

函数

go中函数的声明方式为 func 函数名(参数)返回类型 比较方便的是go中的func可以一次性返回多个不同类型的值 相比于c++灵活了很多

指针

指针和c++中的指针类似,可以对指向地址的值操作,但相对没有c\c++中的指针那么灵活

结构体

type 结构体名 struct 其他和c++中类似,不过感觉面向对象并没有那么彻底 对于struct的方法 声明类型为

func (结构体) 函数名(参数)返回类型

一些简单的包

看具体的接口使用方法还需要详细阅读文档, 文档是很重要的

fmt包、json包、time包等等需要的时候查文档即可

小小总结

今天是青训营学习的第一天,通过视频以及go的相关文档了解了go语法, 感觉有了其他语言的基础学起来还是比较快的,go的变量、函数声明方式给我的感觉很奇怪,这点再官方文档给了这种命名方式的一个解释。