banner
音小董

哩哔哩哔

这世上的热闹出自孤单

第3章:标识符、运算符和流程控制

标识符#

什么是标识符#

== 答:给变量、方法等起的名字就是标志符 ==

标识符的定义规则#

1. 由 26 个英文字母大小写,0-9, _ 组成

2. 数字不可以开头

3. Golang 中严格区分大小写

4. 不能包含空格

5. 下划线 “_”本身在 Go 中是一个特殊的标识符,称为空标识符。可以代表任何其他的标识符,但是它对应的值会被忽略(比如:忽略某个返回值),所以仅能够被作为占位符使用,不能作为标识符使用

6. 不能以系统保留字作为标识符,比如 :brack , if 等

标识符的命名规则#

1. 包名,保持package的名字和目录的名字保持一致,尽量采用有意义的包名,简短,有意义,不要和标准库冲突

2. 变量名,函数名,常量名,采用驼峰命名

3. 如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包内使用(注意:可以简单的理解为,首字母大写是公有的,首字母小写是私有的)

关键字和预定义标识符#

关键字#

关键字是程序发明者规定有特殊含义的单词,又叫保留字,go语言中一共有25个关键字
关键字.png

预定义标识符

预定义标识符一共36个,包含基础数据类型和系统内嵌函数

预定义标识符.png

运算符#

运算符.png

算数运算符#

package main

import "fmt"

func main() {
	// +加号的运用
	//1、取正
	var n1 int = +8
	fmt.Println(n1)
	//2、相加操作
	var n2 int = 6 + 3
	fmt.Println(n2)
	//3、字符串拼接
	var n3 string = "a" + "b" + "c"
	fmt.Println(n3)

	// /除号的运用
	fmt.Println(10 / 3)   //两个int类型运算结果为int类型
	fmt.Println(10.0 / 3) //浮点类型参与运算,结果为浮点类型

	// %取模(也叫余数) 等价公式 a%b=a-a/b*b
	fmt.Println(10 % 3)   // 1
	fmt.Println(10 % -3)  // -1
	fmt.Println(-10 % 3)  // -1
	fmt.Println(-10 % -3) // 1

	// ++自增和--自减运用
	var a int = 10
	a++ //加1操作
	fmt.Println(a)
	a-- //减1操作
	fmt.Println(a)
}

赋值运算符#

package main

import "fmt"

func main() {
	var num1 int = 10
	fmt.Println(num1)
	var num2 int = (10+20)%3*8 - 14 // 等号右侧运算完再赋值给左侧
	fmt.Println(num2)

	var num3 int = 20
	num3 += 20 //等价于 num3 = num3 + 20
	fmt.Println(num3)

	//练习 交换两个数的值(类似于交换两个杯子里的水,需要再借助第三个空杯)
	var a int = 6
	var b int = 9
	var x int
	x = a //先把a的值放到x里临时托管,所以a处于空闲状态就可以进行下一步操作
	a = b //把b的值放到a里面,a就接管了b的值,b现在处于空闲状态
	b = x //把x的值再放到b,x的值是a传过来的,所以等价于b接管了a的值,就实现了a和b值的交换
}

关系运算符#

package main

import "fmt"

func main() {
	fmt.Println(1 == 2) //判断两边是否相等,如果相等返回true,如果不相等返回false
	fmt.Println(1 != 2) //判断两边是否不相等,如果不相等返回true,如果相等返回false(跟==是反的)
	//其他关系运算符类比,就是符合条件返回true,不符合返回false
}

逻辑运算符#

package main

import "fmt"

func main() {
	//与逻辑:&&(可把true理解成真,把false理解成假,)
	//都为真才为真,只要有假就为假(一颗老鼠屎坏一锅汤)
	//特点:左边为假,右边不需要参与运算,结果为false
	fmt.Println(true && true)   //真真为真,结果为true
	fmt.Println(true && false)  //真假为假,结果为false
	fmt.Println(false && true)  //假真为假,结果为false
	fmt.Println(false && false) //假假为假,结果为false
	//或逻辑:||
	//都为假才为假,只要有真就为真
	//特点:左边为真,右边不需要参与运算,结果为true
	fmt.Println(true && true)   //真真为真,结果为true
	fmt.Println(true && false)  //真假为真,结果为true
	fmt.Println(false && true)  //假真为真,结果为true
	fmt.Println(false && false) //假假为假,结果为false
	//非逻辑:!(取相反结果)
	fmt.Println(!true)  //结果为false
	fmt.Println(!false) //结果为true
}

位运算符#

仅简单了解即可!

其他运算符#

&:返回变量的存储地址

*:取指针变量对应的数值

参考指针部分:[[Go 语言入门学习笔记 / 第 4 章:复杂数据类型]]

运算符的优先级#

Go 语言有几十种运算符,分割十个级别:
运算符优先级.png
== 提高优先级可以加括号 ()==

获取用户终端输入#

func main() {
	//实现功能:键盘录入学生年龄,姓名,成绩,是否是VIP
	//方式一:Scanlan
	var age int
	fmt.Println("请录入学生的年龄:")
	//传入变量的地址的目的:在Scanln函数中,对地址中的值进行改变的时候,实际外面的age被影响了
	fmt.Scanln(&age)
	var name string
	fmt.Println("请录入学生的姓名:")
	fmt.Scanln(&name)
	var score float32
	fmt.Println("请录入学生的成绩:")
	fmt.Scanln(&score)
	var isVIP bool
	fmt.Println("请录入学生是否为VIP:")
	fmt.Scanln(&isVIP)
	fmt.Printf("学生的姓名为:%v,年龄为:%v,成绩为:%v,是否为VIP:%v", name, age, score, isVIP)
	fmt.Println()
	//方式二:Scanf
	fmt.Println("请录入学生的年龄, 姓名, 成绩, 是否为VIP, 用空格隔开")
	fmt.Scanf("%d %s %f %t", &age, &name, &score, &isVIP)
	fmt.Printf("学生的姓名为:%v,年龄为:%v,成绩为:%v,是否为VIP:%v", name, age, score, isVIP)
}
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。