Go语言入门指南(中)| 青训营

105 阅读5分钟

第四章:运算符

4.1 算术运算符

算术运算符用于处理数字,其中"+"还可用于字符串的拼接,让我们来看一些例子:

var a, b int = 10, 5

// 加法
var sum = a + b // 结果为 15

// 减法
var diff = a - b // 结果为 5

// 乘法
var product = a * b // 结果为 50

// 除法
var quotient = a / b // 结果为 2

// 取余
var remainder = a % b // 结果为 0

//字符串拼接
var str1 = "Hello, " 
var str2 = "Go!" 
result := str1 + str2//结果为Hello, world!

4.2 关系运算符

关系运算符用于比较两个值的大小关系,返回布尔值。下面让我们看一些具体的示例:

var x, y int = 5, 10

// 等于
var isEqual = x == y // 结果为 false

// 不等于
var isNotEqual = x != y // 结果为 true

// 大于
var isGreater = x > y // 结果为 false

// 小于
var isLess = x < y // 结果为 true

// 大于等于
var isGreaterOrEqual = x >= y // 结果为 false

// 小于等于
var isLessOrEqual = x <= y // 结果为 true

4.3 逻辑运算符

4.3.1逻辑与运算符

逻辑与运算符 && 用于检查两个条件是否同时为真。只有当两个条件都为真时,整个表达式才会返回真。如果任一条件为假,整个表达式将返回假。此外,逻辑与是一种短路运算符,它在第一个条件为假时就停止执行,因为无需再检查后面的条件。

var isAdult = age >= 18
var isStudent = true

// 与运算
var canVote = isAdult && !isStudent // 结果为 true,成年且不是学生才能投票

4.3.2逻辑或(||)

逻辑或运算符 || 用于检查两个条件是否至少有一个为真。只要其中一个条件为真,整个表达式就会返回真。与逻辑与类似,逻辑或也是一种短路运算符,它在第一个条件为真时就停止执行。

var hasPermission = isAdmin || isEditor // 结果为 true,管理员或编辑具有权限

4.3.3逻辑非(!)

逻辑非运算符 ! 用于反转布尔值,将真变为假,将假变为真。

var isBlocked = !isAllowed // 结果为 true,如果不允许,则被阻止

逻辑运算符在控制流程、条件语句和布尔逻辑中都非常有用。通过灵活使用这些运算符,可以创建复杂的条件和逻辑,以满足各种编程需求。记住逻辑运算符的短路特性,它可以提高程序的效率并避免不必要的计算。

4.4 位运算符

Go语言提供了位运算符,它们用于对整数的每个位进行操作。举个例子:

var a, b int = 5, 3

// 按位与
var resultAnd = a & b // 结果为 1

// 按位或
var resultOr = a | b // 结果为 7

// 按位异或
var resultXor = a ^ b // 结果为 6

// 位清零
var resultClear = a &^ b // 结果为 4

第五章:流程控制

5.1条件语句

if 语句是一种常见的条件控制结构,它允许根据条件的真假来执行不同的代码块。在 Go 语言中,if 语句的基本格式如下:

if condition {
    // 如果条件为真,执行这里的代码
} else {
    // 如果条件为假,执行这里的代码
}

以下是关于 if 语句的详细介绍:

5.1.1基本用法

在最简单的情况下,if 语句用于根据条件执行不同的代码块。如果条件为真,执行 if 语句块中的代码,否则执行 else 语句块中的代码。

age := 20

if age >= 18 {
    fmt.Println("成年人")
} else {
    fmt.Println("未成年人")
}

在上面的例子中,如果 age 大于等于 18,将输出 "成年人",否则输出 "未成年人"。

5.1.2单行 if 语句

如果 ifelse 语句块只包含一行代码,可以将其写在一行上,不需要花括号 {}

if age >= 18 {
    fmt.Println("成年人")
} else {
    fmt.Println("未成年人")
}

5.1.3嵌套 if 语句

if 语句可以嵌套,允许在一个 if 语句块内再使用另一个 if 语句。

age := 20
hasID := true

if age >= 18 {
    if hasID {
        fmt.Println("可以购买酒类")
    } else {
        fmt.Println("无法购买酒类,需要身份证")
    }
} else {
    fmt.Println("未成年人,不允许购买酒类")
}

在上面的例子中,首先检查年龄是否大于等于 18,如果是,则进一步检查是否有身份证。

5.1.4 if 语句的初始化语句

if 语句之前可以包含一个初始化语句,用于在条件判断之前执行一些操作。这在需要在 if 语句中使用的临时变量时非常有用。

if num := 10; num%2 == 0 {
    fmt.Println("num 是偶数")
} else {
    fmt.Println("num 是奇数")
}

在上面的例子中,num := 10 是初始化语句,它在 if 语句之前声明了一个 num 变量,并将其初始化为 10。

5.1.5多个条件判断

if 语句也可以包含多个条件判断,使用逻辑运算符来组合条件。

age := 20
hasID := true

if age >= 18 && hasID {
    fmt.Println("可以购买酒类")
} else {
    fmt.Println("不符合购买酒类的条件")
}

在上面的例子中,通过使用 && 逻辑与运算符,将两个条件结合在一起。

5.1.6总结

if 语句是编程中常用的控制结构之一,允许根据条件的真假来执行不同的代码块。通过嵌套 if 语句和逻辑运算符,可以处理复杂的条件逻辑。同时,初始化语句使得在 if 语句内部声明临时变量变得更加方便。了解和熟练使用 if 语句是编写 Go 程序的基本技能之一。

5.1.2 switch语句

switch语句用于多个条件的匹配,可以使用多个case分支,例如:

day := "Monday"
switch day {
case "Monday":
    fmt.Println("星期一")
case "Tuesday":
    fmt.Println("星期二")
default:
    fmt.Println("其他")
}

5.2 循环语句

5.2.1 for循环

for循环用于重复执行一段代码,例如:

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

5.2.2 循环控制语句

  • break:用于跳出当前循环。
  • continue:用于跳过当前循环的剩余部分,进入下一次循环。

5.3 函数

5.3.1 声明函数

在Go语言中,使用func关键字声明函数,例如:

func add(x, y int) int {
    return x + y
}

5.3.2 调用函数

调用函数时,使用函数名和参数列表,例如:

result := add(10, 5)
fmt.Println(result) // 输出 15

5.3.3 函数的返回值

函数可以返回一个或多个值,例如:

func divide(x, y float64) (float64, error) {
    if y == 0 {
        return 0, errors.New("除数不能为零")
    }
    return x / y, nil
}

5.4 总结

承接上篇,本篇文章详细介绍了Go语言的运算符、流程控制以及函数的基本用法,并提供了丰富的示例。这些知识是编写Go程序的关键,继续学习和实践将帮助你深入了解这门语言并编写更复杂的程序。不要害怕犯错,编程就是一个不断学习和改进的过程。如果这份教程对你的学习有所帮助,记得点赞支持一下!