药企做网站,通过高新区网站建设,网上建设网站需要做的工作,苏州建设交通高等职业技术学校网站欢迎来到Golang的世界#xff01;在当今快节奏的软件开发领域#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面#xff0c;Golang#xff08;又称Go#xff09;无疑是一个备受瞩目的选择。在本文中#xff0c;带领您探索Golang的世界#xff0c;一步步地了… 欢迎来到Golang的世界在当今快节奏的软件开发领域选择一种高效、简洁的编程语言至关重要。而在这方面Golang又称Go无疑是一个备受瞩目的选择。在本文中带领您探索Golang的世界一步步地了解这门语言的基础知识和实用技巧。 目录
运算符
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
其他运算符
流程控制
条件语句
循环语句
跳转语句 运算符
运算符用于对操作数执行算术、逻辑、位或其他运算。Go语言中的运算符包括如下几种情况
算术运算符 算术运算符包括如 加法、-减法、*乘法、/除法、%取模等。 举例的代码如下
package main
import fmt
func main() {// 加号的三个作用// 1. 用于表示正数var n1 int 10fmt.Println(n1)// 2. 相加操作var n2 int 10 12fmt.Println(n2)// 3. 字符串拼接var s1 string hello worldfmt.Println(s1)// / 除号fmt.Println(10 / 3) // 两个整数相除结果也是整数fmt.Println(10.0 / 3) // 浮点数相除结果也是浮点数// % 取余fmt.Println(10 % 3) // 两个整数相除结果也是整数fmt.Println(-10 % 3) // 浮点数相除结果也是浮点数// 自增操作 (go语言中或者-- 只能放在变量后面不能放在变量前面只能单独使用不能放在表达式中)var n3 int 10n3fmt.Println(n3)
}
最终达到的效果如下所示 赋值运算符 赋值运算符包括如 赋值、加法赋值、-减法赋值等。 举例的代码如下
package main
import fmt
func main() {var a int 10var b int 20fmt.Printf(a %v, b %v\n, a, b) // a 10, b 20// 交互数值var c intc aa bb cfmt.Printf(a %v, b %v\n, a, b) // a 20, b 10
}关系运算符 关系运算符包括如 等于、!不等于、小于、大于、小于或等于、大于或等于等。 举例的代码如下
package main
import fmt
func main() {// 判断左右两边是否相等相等返回true否则返回falsefmt.Println(5 9) // falsefmt.Println(5 5) // truefmt.Println(5 6) // falsefmt.Println(5 6) // true
}
逻辑运算符 逻辑运算符包括如 逻辑与、||逻辑或、!逻辑非等。 举例的代码如下
package main
import fmt
func main() {// 与逻辑 两个数值都为真时才为真否则为假fmt.Println(true true) // truefmt.Println(true false) // false// 或逻辑|| 两个数值有一个为真时则结果为真fmt.Println(true || true) // truefmt.Println(true || false) // truefmt.Println(false || false) // false// 非逻辑! 逻辑非取反fmt.Println(!true) // falsefmt.Println(!false) // true
}
位运算符 位运算符包括如 按位与、|按位或、^按位异或、^按位清零、左移、右移等。 举例的代码如下
package main
import fmt
func main() {var num1 uint8 5 // 二进制表示: 0000 0101var num2 uint8 3 // 二进制表示: 0000 0011//比较两个数的每一位并将至少有一个数为1的位设置为1。/*num1: 0000 0101 (十进制中的5)num2: 0000 0011 (十进制中的3)------------result: 0000 0111 (十进制中的7)*/result : num1 | num2 // 结果为 7二进制表示: 0000 0111fmt.Printf(Result: %d\n, result)
}
其他运算符 其他运算符包括如 取地址、*解引用指针、自增、--自减等。 举例的代码如下
package main
import fmt
func main() {// 定义一个变量var a int 10fmt.Println(a对应的存储空间地址为, a) // 0xc000116068var ptr *int afmt.Println(ptr) // 0xc000116068fmt.Println(ptr这个指针指向的具体数值为, *ptr) // 10}
Go语言有几十种运算符被分成十几个级别有的运算符优先级不同有的运算符优先级相同请看下表为了提高优先级可以加()
优先级分类运算符结合性1逗号运算符,从左到右2赋值运算符、、-、/、%、、、、^、|从右到左3逻辑或||从左到右4逻辑与从左到右5按位或|从左到右6按位异或^从左到右7按位与从左到右8相等/不等、!从左到右9关系运算符、、、从左到右10位移运算符、从左到右11加法/减法、-从左到右12乘法/除法/取余*、/、%从左到右13单目运算符!、*、、、--、、-从右到左14后缀运算符( )、[ ]、-从左到右
流程控制
流程控制决定了代码的执行顺序。Go语言中的流程控制结构包括如下几种情况
条件语句
条件语句也叫分支结构主要分为if分支和switch分支 if分支有如下情况 if 语句用于基于条件执行代码块。 if-else 语句用于基于条件执行两个代码块之一。 if-else if-else 语句用于基于多个条件执行不同的代码块。 举例的代码如下
package main
func main() {// 实现如果成绩低于60则提示成绩不及格var score int 69// 判断变量可以不需要加括号但是需要加{}if score 70 {println(成绩不及格)}// 在golang中if后面可以并列的加入变量的定义这里通过if else实现if count : 10; count 20 {println(count小于20)} else {println(count大于等于20)}// 对学生的成绩级别进行判别if score 60 {println(不及格)} else if score 80 {println(及格)} else if score 90 {println(良好)} else if score 100 {println(优秀)} else {println(成绩有误)}
} switch分支有如下情况 switch 语句类似于其他语言中的 switch-case 结构但go的 switch 可以使用任何类型作为条件表达式并且不需要 break 语句来终止每个 case。 举例的代码如下
package main
import fmt
func main() {// 输入学生成绩判断成绩等级var score intvar grade stringprintln(请输入成绩)fmt.Scanln(score)// 使用switch语句进行判断switch {case score 60:grade 不及格case score 60 score 70:grade 及格case score 70 score 80:grade 良好case score 80 score 100:grade 优秀default:grade 请输入正常的成绩}// 输出成绩等级println(成绩等级为, grade)
}
最终得到的结果如下所示 注意事项 1switch后是一个表达式(即常量值、变量、一个有返回值的函数等都可以) 2case后面的表达式如果是常量值(字面量)则要求不能重复 3case后的各个值的数据类型必须和switch的表达式数据类型一致 4case后面可以带多个值使用逗号间隔。比如case值1,值2... 5case后面不需要带break 6default语句不是必须的位置也是随意的。 7switch后也可以不带表达式当做if分支来使用 8switch后也可以直接声明/定义一个变量分号结束不推荐 9switch穿透利用fallthrough关键字如果在case语句块后增加fallthrough则会继续执行下一个case,也叫switch穿透。 循环语句
go语言中循环语句只有for 循环用于重复执行代码块直到满足某个条件。 for 循环的初始化条件和迭代可以在同一行中指定或在一个大括号{}内的代码块中指定。 举例的代码如下
func main() {// 求和 1-100var sum int 0// 注意for循环初识表达式不能用var定义变量的形式要用 :for i : 1; i 100; i {sum i}println(sum) // 5050
}
如果想书写死循环的话可以采用下面的方式进行
func main() {// 死循环实现方式1for {println(死循环)}// 死循环实现方式2for ;; {println(死循环)}
} range 关键字常与 for 循环一起使用用于迭代数组、切片、映射或通道的元素。其在语法上类似其他语言中的foreach一般形式如下 for key, val : range coll {...
}
举例的代码如下
func main() {var str string hello world// 对str进行遍历i是索引value是str的每个字符for i, value : range str {println(i, string(value))}
}
最终得到的结果如下所示 跳转语句
跳转语句是编程中用于改变程序正常执行流程的一种控制语句。它们允许程序在特定条件下跳过某些代码段或者立即结束某个循环或函数从而改变程序的执行路径。以下是四种常见的跳转语句及其描述 break语句用于立即退出最内层的循环或 switch 语句。用于立即终止离它最近的循环如while、do-while、for或switch语句并从这些语句之后的第一条语句继续执行。 举例的代码如下
func main() {var sum int 0for i : 1; i 100; i {sum ifmt.Println(sum)if sum 300 {break}}fmt.Println(sum, sum 300, 程序停止了)
}
最终得到的结果如下所示 continue语句用于跳过当前循环的剩余部分并立即开始下一次迭代。用于终止当前循环的本次迭代并立即开始下一次迭代。 举例的代码如下
func main() {// 输出1-100中被6整除的数// 正常使用if语句for i : 1; i 100; i {if i%6 0 {println(i)}}// 采用continue语句for i : 1; i 100; i {if i%6 ! 0 {continue}println(i)}
}
最终得到的结果如下所示 goto语句用于无条件地跳转到程序中的指定标签。尽管 goto 在某些情况下可能有用但过度使用它可能会导致代码难以理解和维护因此通常建议避免使用。 举例的代码如下
package main
import fmt
func main() {i : 0// 定义一个标签startLoop:// 使用for循环和goto模拟一个可能使用goto的场景// 在实际编程中通常不需要使用goto来实现循环for {if i 10 {// 当i大于10时跳转到endLoop标签处goto endLoop}fmt.Println(i)i// 假设有一些复杂的条件判断导致我们需要重新开始循环// 这里使用goto来模拟这种情况goto startLoop}// 这个endLoop标签在for循环内部是访问不到的但为了演示goto的用法我们放在这里endLoop:fmt.Println(Loop ended)// 注意在实际程序中endLoop标签后面的代码永远不会被执行到// 因为for循环会无限循环直到i大于10然后goto跳转到endLoop// 接着main函数就结束了不会继续执行endLoop后面的代码。
}
最终得到的结果如下所示 return语句return语句后面的代码不会被执行因为函数已经退出。用于立即结束当前函数并将控制权返回给调用该函数的地方。 举例的代码如下
package main
import fmt
func main() {for i : 1; i 100; i {fmt.Println(i)if i 10 {return}}fmt.Println(由于return我无法被执行)
}
最终得到的结果如下所示