笔记二、go语法篇(上) | 青训营

97 阅读2分钟

笔记一 、从0到helloworld | 青训营中已经完成了go编译环境的搭建,接下来便是正式的go的学习。

注释

单行注释//

多行注释

/*
*/

可以看下面这个简单的例子

//  这是一个单行注释

/*
这是多行注释
这是多行注释
这是多行注释
*/

在vscode中可以用Ctrl + /的快捷键来进行多行注释,同样也是Ctrl + /可以取消注释。

输出

常用的输出方式有以下三种

print直接输出

printf 格式化输出

println 输出并换行

常用的格式化输出
%f浮点数
%s字符串
%d整数
%v按原格式输出
%+v在 %v 基础上,对结构体字段名和值进行展开
%#v输出 Go 语言语法格式的值

变量常量

在go中变量用var来进行声明,var+变量名+变量类型 一般可以先声明再赋值,也可以声明的同时进行赋值。 在go中,基本数据类型可以省略,也可以用:=来简写。

	//声明
	var name string 
	var age int
	var grade float32
	var Is_student bool

	//声明同时赋值
	var birthday string = "20010826"

	//自动推断类型类型
	var id = 12
	
	// := 简写
	addr := "浙江"

如果有多个变量同时声明可以用批量声明来简写

var(
    name string 
    age int
    grade float32
    Is_student bool
    )

常量使用const来进行声明const name = "张三",也可以=像变量一样进行批量声明

const(
    name = "张三"
    age = 15
    )

有一点值得注意的是:在go中声明了变量必须使用,不然会编译错误,而常量声明之后可以不使用。

在函数外使用的称为全局变量

在go中如果声明基本数据类型后没有赋值,会自动给出默认值。 数字型:0 ; 布尔型:false ; 字符串:"" 。

运算符

算术运算符

+、-、*、/、% 分别表示加、减、乘、除、取余

运算符中没有次方

go中自增只有后++,如果使用++i这种操作则会报错

位运算符

右移 >> , 左移 <<

var x uint8 = 0b10110101

//右移两位
fmt.Printf("x>>2 %b\n", x>>2)  // x>>2 101101

//左移两位
fmt.Printf("x<<2 %b\n", x<<2)  // x<<2 11010100

按位与 & , 按位或 | , 按位异或 ^

var a uint8 = 0b11110000
var b uint8 = 0b10101010

//按位与
fmt.Printf("a&b %b\n", a&b)   // a&b 10100000

//按位或
fmt.Printf("a|b %b\n", a|b)   // a|b 11111010

//按位异或
fmt.Printf("a^b %b\n", a^b)   //a^b 1011010

赋值运算符

+= -= /= *=

关系运算符

> >= < <= == !=

逻辑运算符

&& || !

逻辑短路

&& 前面为false,则不往后判断,直接返回false

|| 前面为true,则不往后判断,直接返回true

判断语句

if else

条件不用加括号

if{要在同一行

if score >= 60 {
        fmt.Println("及格")
} else {
        fmt.Println("不及格")
}

switch case

在go中,case里默认有break,不需要自己加

switch {
case score >= 90:
        fmt.Println("优秀")
case score >= 80:
        fmt.Println("良好")
case score >= 60:
        fmt.Println("及格")
default:
        fmt.Println("不及格")
}

循环

标准for循环

for 初始条件;结束条件;每次循环结束执行

for i := 1; i < 5; i += 2 {
    fmt.Println(i)
}

条件循环

在go中没有while循环,可以用条件循环来代替

i := 1
for i < 10 {
        i += 3
        fmt.Println(i)
}

无限循环

for 后面不加参数即为无限循环

i = 0
for {
        i ++
        fmt.Println(i)
        if i > 2 {
                break
        }
}

在for循环中有两个比较重要的关键词continue,break

continue跳过本次循环,continue后的语句不再执行

break 跳出当前循环