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.当全局变量与局部变量名称相同时,函数内的变量优先考虑。
来源:https://www.cnblogs.com/lengshan023/p/11075433.html