更新系列
Go语言头秃之路(零)
Go语言头秃之路(二)
Go语言头秃之路(三)
Go语言头秃之路(四)
Go语言头秃之路(五)
Go语言头秃之路(六)
Go语言头秃之路(七)
各种基础语句
- const常量
- 常量(const)声明的时候必须赋值,且值不能修改;
语法:const 变量名 [类型] = 值 - 常量只能修饰bool、数值类型(int/float系列)、string类型;
- 常量组中某个常量没有赋值会使用上一行变量的表达式;
- 常量只定义不使用不会报错;
- 一种高级写法 iota(累加器)
iota只能在常量组中使用,不同的const组互不影响const ( // 第一个变量值为0,往下逐行累加,同一行的值相等 b = iota c d, e = iota, iota ) fmt.Println(b, c, d, e) // 0 1 2 2
- if语句
Golang支持在if语句中定义变量
注意:if age:=2;age >= 18 { fmt.Println("成年人为自己负责!") } else { fmt.Println("未成年家长负责!") }
- 一定要有大括号;
- else与俩括号必须在同一行,换行会报错;
- switch语句
golang的switch语句case后的表达式可以有多个,用逗号分隔。switch表达式和case表达式可以是常量、变量或者有返回函数,但是switch表达式值和case表达式值类型必须相同
,且多个case常量值
不能重复(变量可以重复),否则编译不过。
golang中的case语句块中不需要加break,其默认会在末尾加上
穿透fallthrough(可以写多个表达式替代此功能)
if和switch使用区分:
当具体数值不多,且为基础数据类型可以使用switch;
当做区间判断或结果为bool值时使用if。
- for循环
- 包含变量初始化、循环判断条件、循环语句块、变量迭代。
三种形式
go语言没有while语句,上栗第三种方式可以替代之。for i:=1;i<10;i++ { fmt.Println("hello,",i) } j:=1 for j<10 { fmt.Println("world.",j) j++ } k:=1 for { // 没有break就是死循环;等价于for ;; { if k<10 { fmt.Println(k) k++ } else { break } }
- 遍历字符串
注意中文str1 := "hello,world!来啦" // 按照单字节遍历,一个中文占3个字节,会出现乱码 for i := 0;i<len(str1);i++ { fmt.Printf("%c\n",str1[i]) } str2 := "hey,gay!溜溜" // 按照字符遍历,中文可以正常显示,但对应的下标不是顺序的 for k, v := range str2 { fmt.Printf("%d %c\n",k,v) }
- 包含变量初始化、循环判断条件、循环语句块、变量迭代。
- break
默认跳出最近一层循环,如果需要跳出嵌套循环可以使用标签
饭粒:
同样的,func main() { label2: for i:=0;i<3;i++ { for j:=0;j<3;j++ { if j == 2 { break label2 } fmt.Println("j =", j) } } }
continue
也可以带标签,比如标签在外层循环,则停止外层的当前循环,开始下一次外层循环。
goto
语法作用相同。(不建议使用goto语句,容易程序混乱)