记录一下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的变量、函数声明方式给我的感觉很奇怪,这点再官方文档给了这种命名方式的一个解释。