Go语言基础知识总结(持续中)

Go基础知识总结 变量声明

Go语言中的变量需要声明以后才可以使用(需要提前定义变量)并且声明后必须使用(不适用会报错)

标准声明 var 变量名 变量类型

example:

var name string var id int var isOk bool

多变量声明可以整合在一起

var ( name string id int isOk bool ) 变量初始化

Go语言在声明变量的时候,会自动对变量对应的内存区进行初始化操作。

var 变量名 变量类型 = 表达式

example:

var name string = "A2rcher" var id int = 123 类型推断

Go语言提供了一种简易的方式,不需要提供变量类型,可以根据后面的初始化操作后自动推断其变量类型

var name = "A2rcher" var id = 123 短变量声明

在之后学习到的函数中,还可以用更简单的方式来声明一个变量(也是最常用的声明方法),使用:=声明并初始化变量

package main import ( "fmt" ) var m = 100 //全局变量 func main(){ n:=100 m:=300//声明并初始化局部变量 fmt.Println(m, n) } 匿名变量

所谓匿名,通俗的讲就是没有名字的变量,用下划线_表示,匿名变量不占用命名空间(Go语言中变量声明后必须使用,匿名变量除外),不会分配内存,所以匿名变量之间不存在重复声明。

package main import "fmt" func foo() (string, int) { return "A2rcher", 20 } func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x, "y=", y) }

image-20210731155018710

常量

变量中还有一中是常量,它相对于变量来讲是永恒不变的值,对于变量来说一开始可以不做赋值直接定义类型,但是对于常量来讲他需要在定义的时候就要赋值,用const

const p = 3.1415 const e = 2.7182

多常量声明可以整合在一起

const ( p = 3.1415 e = 2.7182 ) iota常量计算器

iota是Go语言中的常量计算器,在常量表达式中使用。

package main import "fmt" const ( n1 = iota n2 n3 n4 ) func main() { fmt.Println(n1)//0 fmt.Println(n2)//1 fmt.Println(n3)//2 fmt.Println(n4)//3 }

image-20210731155850749

iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。

使用下划线_可以跳过其中一个

package main import "fmt" const ( n1 = iota//0 _ //1 n2 //2 n3 //3 n4 //4 ) func main() { fmt.Println(n1)//0 fmt.Println(n2)//2 fmt.Println(n3)//3 fmt.Println(n4)//4 }

image-20210731160041611

数据类型 整型 类型 描述
uint8   无符号 8位整型 (0 到 255)  
uint16   无符号 16位整型 (0 到 65535)  
uint32   无符号 32位整型 (0 到 4294967295)  
uint64   无符号 64位整型 (0 到 18446744073709551615)  
int8   有符号 8位整型 (-128 到 127)  
int16   有符号 16位整型 (-32768 到 32767)  
int32   有符号 32位整型 (-2147483648 到 2147483647)  
int64   有符号 64位整型 (-9223372036854775808 到 9223372036854775807)  
特殊整型 类型 描述
uint   32位操作系统上就是uint32,64位操作系统上就是uint64  
int   32位操作系统上就是int32,64位操作系统上就是int64  
uintptr   无符号整型,用于存放一个指针  

image-20210731161202158

浮点型

Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE 754标准: float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。 float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。

打印浮点数时,可以使用fmt包配合动词%f,代码如下:

package main import ( "fmt" "math" ) func main() { fmt.Printf("%f\n", math.Pi) fmt.Printf("%.2f\n", math.Pi) } 复数

complex64和complex128

var c1 complex64 c1 = 1 + 2i var c2 complex128 c2 = 2 + 3i fmt.Println(c1) fmt.Println(c2)

复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位。

布尔 字符串 byte和rune 运算符 运算符 描述
+   相加  
-   相减  
*   相乘  
/   相除  
%   求余  
运算符 描述
==   检查两个值是否相等,如果相等返回 True 否则返回 False。  
!=   检查两个值是否不相等,如果不相等返回 True 否则返回 False。  
>   检查左边值是否大于右边值,如果是返回 True 否则返回 False。  
>=   检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。  
<   检查左边值是否小于右边值,如果是返回 True 否则返回 False。  
<=   检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。  
运算符 描述
&&   逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。  
||   逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。  
!   逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。  
运算符 描述
&   参与运算的两数各对应的二进位相与。 (两位均为1才为1)  
|   参与运算的两数各对应的二进位相或。 (两位有一个为1就为1)  
^   参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1)  
<<   左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。  
>>   右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。  
运算符 描述
=   简单的赋值运算符,将一个表达式的值赋给一个左值  
+=   相加后再赋值  
-=   相减后再赋值  
*=   相乘后再赋值  
/=   相除后再赋值  
%=   求余后再赋值  
<<=   左移后赋值  
>>=   右移后赋值  
&=   按位与后赋值  
|=   按位或后赋值  
^=   按位异或后赋值  
流程控制 if else for 初始语句;条件表达式;结束语句{ 循环语句 }

example:

package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println(i) } }

image-20210731164417709

for循环的初始语句可以被忽略,但是用作与隔开的分号;还是要有的。

package main import "fmt" var i = 0 func main() { for ; i < 10; i++ { fmt.Println(i) } }

image-20210731164549595

for循环的结束语句也是可以省略掉的

package main import "fmt" var i = 0 func main() { for i < 10 { fmt.Println(i) i++ } }

image-20210731164654062

for range(键值循环)

键值循环可以用作与遍历,切片,map还有channel。遵循一下规律

数组、切片、字符串返回索引和值。

map返回键和值。

通道(channel)只返回通道内的值。

switch

image-20210731164937175

image-20210731164947380

goto(跳转指定标签)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfxw.html