教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 GoLang 学习笔记 - 运算符

GoLang 学习笔记 - 运算符

发布时间:2022-01-21   编辑:jiaochengji.com
教程集为您提供GoLang 学习笔记 - 运算符等资源,欢迎您收藏本站,我们将为您提供最新的GoLang 学习笔记 - 运算符资源
<blockquote>

运算符用于在程序运行时执行数学或逻辑运算。

Go 语言内置的运算符有:

<ul><li>算术运算符</li> <li>关系运算符</li> <li>逻辑运算符</li> <li>位运算符</li> <li>赋值运算符</li> <li>其他运算符</li> </ul></blockquote> <h1>算术运算符</h1>

下表列出了所有Go语言的算术运算符。假定 A 值为 15,B 值为 5 。

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td> </td> <td>相加</td> <td>A B 输出结果 20</td> </tr><tr><td>-</td> <td>相减</td> <td>A - B 输出结果 10</td> </tr><tr><td>*</td> <td>相乘</td> <td>A * B 输出结果 75</td> </tr><tr><td>/</td> <td>相除</td> <td>B / A 输出结果 3</td> </tr><tr><td>%</td> <td>求余</td> <td>B % A 输出结果 0</td> </tr><tr><td> </td> <td>自增</td> <td>A 输出结果 16</td> </tr><tr><td>--</td> <td>自减</td> <td>A-- 输出结果 14</td> </tr></tbody></table><blockquote>

<em>GoLang 中 和 -- 操作只可以当成一个语句来使用,不可以作为表达式。这样可以避免很多问题。</em>

<pre><code class="lang-go hljs">a //允许 b = a //不允许 </code></code></pre>

即便如此,自增和自减仍然是一种很不规范的操作。我建议大家在实际开发中应当避免,使用<code>a = 1</code> 来取代。

</blockquote> <h1>关系运算符</h1>

下表列出了所有Go语言的关系运算符。假定 A 值为 10,B 值为 20。

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td>==</td> <td>检查两个值是否相等,如果相等返回 true 否则返回 false。</td> <td>(A == B) 为 false</td> </tr><tr><td>!=</td> <td>检查两个值是否不相等,如果不相等返回 true 否则返回 false。</td> <td>(A != B) 为 true</td> </tr><tr><td>></td> <td>检查左边值是否大于右边值,如果是返回 true 否则返回 false。</td> <td>(A > B) 为 false</td> </tr><tr><td><</td> <td>检查左边值是否小于右边值,如果是返回 true 否则返回 false。</td> <td>(A < B) 为 true</td> </tr><tr><td>>=</td> <td>检查左边值是否大于等于右边值,如果是返回 true 否则返回 false。</td> <td>(A >= B) 为 false</td> </tr><tr><td><=</td> <td>检查左边值是否小于等于右边值,如果是返回 true 否则返回 false。</td> <td>(A <= B) 为 true</td> </tr></tbody></table><h1>逻辑运算符</h1>

下表列出了所有Go语言的逻辑运算符。假定 A 值为 true,B 值为 talse。

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td>&&</td> <td>逻辑与运算符。 如果两边的操作数都是 true,则条件 true,否则为false。</td> <td>(A && B) 为 false</td> </tr><tr><td>||</td> <td>逻辑或运算符。 如果两边的操作数有一个 true,则条件 true,否则为 false。</td> <td>(A || B) 为 true</td> </tr><tr><td>!</td> <td>逻辑非运算符。 如果条件为 true,则逻辑非条件 false,否则为 true。</td> <td>! (A && B) 为 true</td> </tr></tbody></table><h1>位运算符</h1>

位运算符对整数在内存中的二进制位进行操作。
下表列出了位运算符 <code>&</code> , <code>|</code> , 和 <code>^</code> 的计算:

<table><thead><tr><th>p</th> <th>q</th> <th>p & q</th> <th>p | q</th> <th>p ^ q</th> </tr></thead><tbody><tr><td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> </tr><tr><td>0</td> <td>1</td> <td>0</td> <td>1</td> <td>1</td> </tr><tr><td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>0</td> </tr><tr><td>1</td> <td>0</td> <td>0</td> <td>1</td> <td>1</td> </tr></tbody></table>

假定 A = 60; B = 13; 其二进制数转换为:

<pre><code class="lang-go hljs">A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 </code></code></pre>

GoLang 支持的位运算符如下表所示。假定 A 为60,B 为13:

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td>&</td> <td>按位与, 其功能是参与运算的两数各对应的二进位相与。</td> <td>(A & B) 结果为 12,二进制为 0000 1100</td> </tr><tr><td>|</td> <td>按位或,其功能是参与运算的两数各对应的二进位相或。</td> <td>(A | B) 结果为 61,二进制为 0011 1101</td> </tr><tr><td>^</td> <td>按位异或,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。</td> <td>(A ^ B) 结果为 49,二进制为 0011 0001</td> </tr><tr><td><<</td> <td>左移,左移 n 位就是乘以 2 的 n 次方。 其功能把 <code><<</code> 左边的运算数的各二进位全部左移若干位,由 <code><<</code> 右边的数指定移动的位数,高位丢弃,低位补 0。</td> <td>A << 2 结果为 240,二进制为 1111 0000</td> </tr><tr><td>>></td> <td>右移,右移 n 位就是除以 2 的 n 次方。 其功能是把 <code>>></code> 左边的运算数的各二进位全部右移若干位, <code>>></code> 右边的数指定移动的位数。</td> <td>A >> 2 结果为 15 ,二进制为 0000 1111</td> </tr></tbody></table><h1>赋值运算符</h1>

下表列出了所有Go语言的赋值运算符。

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td>=</td> <td>简单的赋值运算符,将一个表达式的值赋给一个左值</td> <td>C = A B 将 A B 表达式结果赋值给 C</td> </tr><tr><td> =</td> <td>相加后再赋值</td> <td>C = A 等于 C = C A</td> </tr><tr><td>-=</td> <td>相减后再赋值</td> <td>C -= A 等于 C = C - A</td> </tr><tr><td>*=</td> <td>相乘后再赋值</td> <td>C *= A 等于 C = C * A</td> </tr><tr><td>/=</td> <td>相除后再赋值</td> <td>C /= A 等于 C = C / A</td> </tr><tr><td>%=</td> <td>求余后再赋值</td> <td>C %= A 等于 C = C % A</td> </tr><tr><td><<=</td> <td>左移后赋值</td> <td>C <<= 2 等于 C = C << 2</td> </tr><tr><td>>>=</td> <td>右移后赋值</td> <td>C >>= 2 等于 C = C >> 2</td> </tr><tr><td>&=</td> <td>按位与后赋值</td> <td>C &= 2 等于 C = C & 2</td> </tr><tr><td>^=</td> <td>按位异或后赋值</td> <td>C ^= 2 等于 C = C ^ 2</td> </tr><tr><td>|=</td> <td>按位或后赋值</td> <td>C |= 2 等于 C = C | 2</td> </tr></tbody></table><h1>其他运算符</h1>

下表列出了Go语言的其他运算符。

<table><thead><tr><th>运算符</th> <th>描述</th> <th>实例</th> </tr></thead><tbody><tr><td>&</td> <td>返回变量存储地址。</td> <td> <code>&a</code> 将给出变量的实际地址。</td> </tr><tr><td>*</td> <td>指针变量。</td> <td> <code>*a</code> 是一个指针变量</td> </tr></tbody></table><h1>运算符优先级</h1>

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。
这里,具有最高优先级的运算符放在表的顶部,具有最低优先级的运算符出现在底部。

<table><thead><tr><th>分类</th> <th>描述</th> <th>关联性</th> </tr></thead><tbody><tr><td>后缀</td> <td> <code>( )</code> <code>[ ]</code> <code>-></code> <code>.</code> <code> </code> <code>--</code> </td> <td>左到右</td> </tr><tr><td>单目</td> <td> <code> </code> <code>-</code> <code>!</code> <code>~</code> <code>(type)</code> <code>*</code> <code>&</code> <code>sizeof</code> </td> <td>右到左</td> </tr><tr><td>乘法</td> <td> <code>*</code> <code>/</code> <code>%</code> </td> <td>左到右</td> </tr><tr><td>加法</td> <td> <code> </code> <code>-</code> </td> <td>左到右</td> </tr><tr><td>移位</td> <td> <code><<</code> <code>>></code> </td> <td>左到右</td> </tr><tr><td>关系</td> <td> <code><</code> <code><=</code> <code>></code> <code>>=</code> </td> <td>左到右</td> </tr><tr><td>相等</td> <td> <code>==</code> <code>!=</code> </td> <td>左到右</td> </tr><tr><td>按位与</td> <td><code>&</code></td> <td>左到右</td> </tr><tr><td>按位异或</td> <td><code>^</code></td> <td>左到右</td> </tr><tr><td>按位或</td> <td><code>|</code></td> <td>左到右</td> </tr><tr><td>逻辑与</td> <td><code>&&</code></td> <td>左到右</td> </tr><tr><td>逻辑或</td> <td><code>||</code></td> <td>左到右</td> </tr><tr><td>赋值运算符</td> <td> <code>=</code> <code> =</code> <code>-=</code> <code>*=</code> <code>/=</code> <code>%=</code> <code>>>=</code> <code><<=</code> <code>&=</code> <code>^=</code> <code>|=</code> </td> <td>右到左</td> </tr><tr><td>逗号</td> <td><code>,</code></td> <td>左到右</td> </tr></tbody></table>

在表达式中,将首先计算较高优先级运算符。当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。




<em>以上内容均源于网络,并加上自己的实践和理解,如有错误的地方,请在评论区指正。</em>


到此这篇关于“GoLang 学习笔记 - 运算符”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang学习笔记(一):包,变量,函数
Go 语言数据类型:byte、rune与字符串
Go语言学习笔记 --- 指针和自增自减运算及相关注意事项
Golang学习笔记-变量,常量,运算符
Golang学习笔记(五):Go语言与C语言的区别
Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型
想系统学习GO语言(Golang
Go 语言中channel通道死锁经典错误案例详解
Go 学习笔记 01 | 输出、变量、常量、命名规则和代码风格
「Go学习笔记」2.Go语言由什么组成?

[关闭]
~ ~