Golang基础语法(一)

断了今生、忘了曾经 提交于 2020-04-07 09:38:44

Golang基础知识

 

一、运行

1.go run hello.go直接运行go文件

2.go build hello.go 编译hello.go,产生二进制可执行文件

3.go install hello.go 编译产生二进制文件,并且将其移动到GOPATH的bin目录下,在任何的目录下都可执行该文件

 

二、变量

声明方法:

Var 变量名类型= 值        //声明时复制

Var 变量名= 值 //不声明类型,编译器自己推出变量类型

Var 变量类型    变量= 值        //声明后再赋值

速记声明    变量名:= 值 //速记声明    左边至少有一个是新变量,且不能作为全局变量

_,b = 5,7  //空白标识符用于抛弃值,如左边,5被抛弃

 

三、数据类型

bool类型:true或false

有符号整型:uint8,uint16,uint32,uint64,uint

无符号整型:int8,int16,int32,int64,int

浮点型:float32,float64

复数型:complex64,complex128

特殊:type(uint8的别称),rune(int32的别名)

字符型:string

派生类型:指针、数组、结构体、Channel、函数、切片、接口、Map

类型转换:T(v)将v转换为T值        //Go中没有隐式转换

常量:只能是布尔型、数字和字符串,且被const修饰的常量不能被更改

常量定义格式:跟变量格式一样,将var换成const即可        //如const PI float=3.14

高级知识点:

1.常量可以用len(),cap(),unsafe.Sizeof()函数计算表达式的值

2.字符串在go中是个结构,包含指向底层数组的指针和长度,每个部分8字节,所以字符串类型大小为16字节

3.nusafe.sizeof()求的是传入类型的长度,int 8字节,指针8字节,string 16个字节,切片[ ]24个字节(类型,长度,容量)

特殊常量:iota,一个可以被编译器修改的常量,在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。iota可以被用作枚举。

 

四、Go运算符

跟大多数语言一样,Go运算符包括:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符

 

五、Go表达式

(一)if条件语句

语法:  if condition{    }else if{    }else {    }

#condition是判断条件如果成立则执行,即使{    }里只有一条语句,{    }也是必须的不可省略

#If    还有个变体,if statement; condition{}。先执行statement,在判断condition。

(二)for循环语句

语法:for initialisation;condition;post{    }

#For循环是Go中唯一的循环,没有其他语言的while和do while语句

#break    用于终止for循环,continue用于终止本轮循环(继续下一轮)

#initialsation和post可以省略,此时相当于while循环        //如    for i<10 {    }

#可以在for循环中平行声明和操作多个变量        //如    for i,j,k:=1,2,3;i<10,j<10,k<10;i++,j++,k++{    }

(三)switch选择语句

语法:switch  *{

case   *:

case   *:

default:

}

#switch语句用于基于不同条件执行不同动作,每个case分支都是唯一的,从上到下依次匹配,直到匹配成功为止。匹配项后面也不用加break语句。

#可以在case中包含多个表达式,用逗号隔开。

#switch中的表达式也是可选的,如果没有表达式,相当于switch true,每个case表达式的求值结果与true比较,如果相等则执行case相应代码。

#fallthrough语句用于标明执行完当前case语句之后按照顺序执行下一个case语句,fallthrough只可放于每个case最后一句。

 

六、函数

函数声明语法:func functionname(paramername type)returntype{    }

#函数声明以func开头,后面跟函数名字,接着是传入的参数和类型,多个参数以逗号隔开并()起来,后面是返回值及类型,多个返回值用逗号隔开并()起来,参数和返回值都是可选的。

#可以给返回值指定名字,如果指定返回值名字则视为在函数第一行定义了。

#空指示符(_),它用于代替任何类型的任何值,当我们不需要某个返回值的时候用空指示符代替

#参数传递:

1.值传递:值传递将实际参数复制一份传递给函数,函数修改参数时不影响实际参数

2.引用传递:将实际参数的地址传递给函数,函数修改参数时实际参数也被修改

#变量作用域:

1.全局变量:在函数外定义的变量,可以在任何函数中使用

2.局部变量:在函数内定义的变量,只能在函数中使用

3.当全局变量与局部变量名称相同时,函数内的变量优先考虑。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!