Golang学习记录(2)——它算什么东西?它怎么算?

发布于 2022-10-20  28 次阅读


值得高兴的是,我终于回成都了,也有更多时间用来学习了。

上一章记了一下Go语言的基础语法和变量定义,这一章继续探索Go语言的运算符。

基本算术运算

+、-、*、/都是很基本的四则运算方法,分别表示加、减、乘、除,与其他语言没有什么不同,也没有什么特殊的用法,如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
    "fmt"
)

func main() {
    a := 13
    b := 14

    fmt.Println("a + b =", a+b)
    fmt.Println("a - b =", a-b)
    fmt.Println("a * b =", a*b)
    fmt.Println("a / b =", a/b)
}

得到结果如下:

1
2
3
4
a + b = 27
a - b = -1
a * b = 182
a / b = 0

值得注意的是除法,与Python这种弱类型的语言不同,Go是强类型的语言,所以在处理运算的时候需要注意类型转换的问题。

除了四则运算以外,还有一些在计算机编程语言中常见的运算符,%、++、--,它们分别表示取余、自增、自减。很常用的运算符,就不过多介绍了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import (
    "fmt"
)

func main() {
    a := 13
    b := 14

    fmt.Println("b % a =", b%a)
    a++
    fmt.Println("a++ =", a)
    b--
    fmt.Println("b-- =", b)
}

结果为:

1
2
3
b % a = 1
a++ = 14
b-- = 13

关系运算

除了基本算术运算外,go还支持关系运算符,如下表(其中,A 值为 10,B 值为 20):

运算符用法描述使用例
==检查两个值是否相等,如果相等返回 True 否则返回 False。(A == B) 为 False
!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。(A != B) 为 True
>检查左边值是否大于右边值,如果是返回 True 否则返回 False。(A > B) 为 False
<检查左边值是否小于右边值,如果是返回 True 否则返回 False。(A < B) 为 True
>=检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。(A >= B) 为 False
<=检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。(A <= B) 为 True
Go关系运算符

在if分支中或是其他需要条件判断的地方会较多使用关系运算符。

逻辑运算符

假定 A 值为 True,B 值为 False,如下表:

运算符用法描述使用例
&&逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。(A && B) 为 False
||逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。(A || B) 为 True
!逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。!(A && B) 为 True

也是计算机编程中常用的运算符,就不过多说明了。不过说到逻辑运算符,我打算新开一个系列,介绍从最基础的逻辑门开始搭建一台图灵完备的计算机。不过现在挖的坑似乎有点多了,所以这个系列暂时不急。

与逻辑运算符类似的,还有位运算符,可以看作是对数据中每一位的逻辑运算,如下表:

pqp & qp | qp ^ q
00000
01011
11110
10011
位运算

还有对于位操作的左移、右移运算,分别为<<、>>,与C语言和其他大多数语言中的位移操作一样。

赋值运算

上述运算符中除了++、--、&&、||、!这些运算符以外,均可在原运算符后加等号进行赋值运算,如+=、-=等分别表示相加后赋值和相减后赋值,这种操作在其他大多数语言中也都有,所以不再额外介绍。

指针运算

与C/C++/Rust类似,在Go中进行指针运算有两个运算符,分别为&和*。其作用(表示)分别为获取变量存储地址和指针变量,这一点在后面介绍指针的时候再详细说明。


学而不思则罔,思而不学则殆