标识符#
什么是标识符#
== 答:给变量、方法等起的名字就是标志符 ==
标识符的定义规则#
1. 由 26 个英文字母大小写,0-9, _ 组成
2. 数字不可以开头
3. Golang 中严格区分大小写
4. 不能包含空格
5. 下划线 “_”本身在 Go 中是一个特殊的标识符,称为空标识符。可以代表任何其他的标识符,但是它对应的值会被忽略(比如:忽略某个返回值),所以仅能够被作为占位符使用,不能作为标识符使用
6. 不能以系统保留字作为标识符,比如 :brack , if 等
标识符的命名规则#
1. 包名,保持package的名字和目录的名字保持一致,尽量采用有意义的包名,简短,有意义,不要和标准库冲突
2. 变量名,函数名,常量名,采用驼峰命名
3. 如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包内使用(注意:可以简单的理解为,首字母大写是公有的,首字母小写是私有的)
关键字和预定义标识符#
关键字#
关键字是程序发明者规定有特殊含义的单词,又叫保留字,go语言中一共有25个关键字
预定义标识符
预定义标识符一共36个,包含基础数据类型和系统内嵌函数
运算符#
算数运算符#
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 语言有几十种运算符,分割十个级别:
== 提高优先级可以加括号 ()==
获取用户终端输入#
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)
}