内容概述
本文主要内容是关于go语言的初步学习,重点突出记录go语言和其它语言的不同之处。
主要内容
运行注意事项
go是个偏向工程的语言,运行会直接从main.go进入,且只能有一个main.go文件,和C类似。JAVA适合初学者进行类似算法的学习,手敲一个个样例再直接运行。go直接运行会报错,实际运行单个go文件从shell进入go run 文件名即可,例如 go run hello.go。
变量常量
1.go是个强类型语言。和其它语言不同的是以var进行变量定义,这一点很方便。
2.分两种方式进行变量定义,一是先声明再赋值,二是声明的同时赋值。
第一种:先 var 变量名 变量类型,再 变量名 := 变量值,样例:先var v int 再 v := 1;
第二种: var 变量名 变量类型 = 变量值,样例 var v int = 1。
3.常量就将var改为const
if-else 判断
1.不带括号,且可以添加前置条件,初始化变量,以分号隔开。
2.循环内是单个语句也需要用大括号。
3.if后面的左大括号,必须和if在同一行,否则编译不通过。
for 循环
没有while do-while,循环只用for。
switch
不需要break,case可以使用任意变量类型。
数组
1.下标从0开始
2.可以自动推导数组长度,例如var arr = [...]int{7, 8, 9}
切片
切片其实就是可变数组,更加灵活。 使用make(类型,长度)进行初始化,支持append和copy等操作
map
map其实就是字典,形如key-value的键值对形式。
初始化:make(map[key类型]value类型)
删除操作:delete(map,key)
range
快速遍历,使用for range的形式,例如for key, value := range m,对于不需要用的可以用_代替。
函数
1.变量类型后置,func 函数名(变量名 变量类型)(返回值类型),形如func sum(v1 int, v2 int) int
2.支持返回多个值,实际业务第二个值返回错误信息
指针
主要起对传入参数修改的作用
结构体
可以为结构体定义一些方法,(结构体变量,结构体类型)前置到函数名之前,形如 func (u User) PrintName() string
错误处理
返回值添加一个error,nil表示无错
和java,c等不同,输出时以%d的形式输出数据类型。go只需以v即可输出任何类型,+v详细,#v更详细。
总结
本文主要介绍了一些关于go的基础知识,总体感觉go更加简洁,存在很多和其它语言不同的地方。