目录

文章目录

  • 目录
  • 运算符
  • 赋值运算符
  • 算术运算符
  • 逻辑运算符
  • 关系运算符
  • 位运算符
  • 指针运算符、取值运算符和取址运算符
  • 运算符优先级
  • ... 语法糖

运算符

Golang 内置的运算符包括:

  • 赋值运算符
  • 算术运算符
  • 逻辑运算符
  • 关系运算符
  • 位运算符
  • 其他运算符

赋值运算符

算术运算符

注意:Golang 的自增,自减只能作为表达式使用,而不能用于赋值语句,例如:

a++    // 这是允许的,等同于 a = a + 1
a--
a = a++ // 这是不允许的,会出现变异错误 syntax error: unexpected ++ at end of statement

逻辑运算符

关系运算符

位运算符

位运算符对整数在内存中的二进制位进行操作。


示例:

package mainimport "fmt"func main() {var a uint = 60      /* 60 = 0011 1100 */  var b uint = 13      /* 13 = 0000 1101 */var c uint = 0          c = a & b       /* 12 = 0000 1100 */fmt.Printf("第一行 - c 的值为 %d\n", c )c = a | b       /* 61 = 0011 1101 */fmt.Printf("第二行 - c 的值为 %d\n", c )c = a ^ b       /* 49 = 0011 0001 */fmt.Printf("第三行 - c 的值为 %d\n", c )c = a << 2     /* 240 = 1111 0000 */fmt.Printf("第四行 - c 的值为 %d\n", c )c = a >> 2     /* 15 = 0000 1111 */fmt.Printf("第五行 - c 的值为 %d\n", c )
}

指针运算符、取值运算符和取址运算符

“*” 与数据类型预留标识符结合使用时,表示一个指针变量;其余则表示一个取值运算符,取出指针指向的内存数据值。

示例:

package mainimport "fmt"func main() {var a int = 4var b int32var c float32var ptr *int     // 定义一个整型指针变量 ptr/* 运算符实例 */fmt.Printf("第 1 行 - a 变量类型为 = %T\n", a);fmt.Printf("第 2 行 - b 变量类型为 = %T\n", b);fmt.Printf("第 3 行 - c 变量类型为 = %T\n", c);/*  & 和 * 运算符实例 */ptr = &a     // 'ptr' 包含了 'a' 变量的地址fmt.Printf("a 的值为  %d\n", a);fmt.Printf("ptr 为 %d\n", ptr);      // 取的整型指针变量 ptr 的地址值fmt.Printf("*ptr 为 %d\n", *ptr);    // 取的整型指针变量 ptr 指向的数据值
}

结果:

第 1 行 - a 变量类型为 = int
第 2 行 - b 变量类型为 = int32
第 3 行 - c 变量类型为 = float32
a 的值为  4
ptr 为 824634458120
*ptr 为 4

运算符优先级

表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低。

其中,二元运算符的运算方向均是从左至右:

package mainimport "fmt"func main() {var a int = 20var b int = 10var c int = 15var d int = 5var e inte = (a + b) * c / d      // ( 30 * 15 ) / 5fmt.Printf("(a + b) * c / d 的值为 : %d\n",  e)e = ((a + b) * c) / d    // (30 * 15 ) / 5fmt.Printf("((a + b) * c) / d 的值为  : %d\n" ,  e)e = (a + b) * (c / d)   // (30) * (15/5)fmt.Printf("(a + b) * (c / d) 的值为  : %d\n",  e)e = a + (b * c) / d     //  20 + (150/5)fmt.Printf("a + (b * c) / d 的值为  : %d\n" ,  e)

… 语法糖

是 Golang 的一种语法糖:

  1. 用于函数的变长形参列表。
  2. 用于打散 Slice 类型变量的元素,类似于 Python 中的 List.extend(散列合并两个列表)。

示例 1:

// 传入一个可变长的形参列表,args 实际上是 Slice 类型的。
func test(args ...string) {for _, v:= range args{fmt.Println(v)}
}

示例 2:

var strss1= []string{"qwr","234","yui",
}var strss2= []string{"qqq","aaa","zzz","zzz",
}strss=append(strss1, strss2...) // strss2 的元素会被打散,并一个个的 append 到 strss1
fmt.Println(strss1)

结果:

[qwr 234 yui qqq aaa zzz zzz]

Go 语言编程 — 运算符相关推荐

  1. C 语言编程 — 运算符

    目录 文章目录 目录 前文列表 运算符 算数运算符 自增.自减运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 逗号运算符 sizeof 运算符 杂项运算符 运算符的优先级 前文列表 <程序 ...

  2. C 语言编程 — 高级数据类型 — void 类型

    目录 文章目录 目录 前文列表 void 类型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> & ...

  3. C 语言编程 — 高级数据类型 — 字符串

    目录 文章目录 目录 前文列表 字符串 字符串拷贝 字符串比较 strcmp strncmp 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> &l ...

  4. C 语言编程 — 指令行参数

    目录 文章目录 目录 前文列表 命令行参数 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...

  5. C 语言编程 — 编程实践

    目录 文章目录 目录 前文列表 程序示例 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...

  6. C 语言编程 — 编程规范

    目录 文章目录 目录 前文列表 排版 注释 头文件 函数 标识符命名与定义 变量 宏.常量 代码逻辑 内存操作 日志打印 质量保证 单元测试 断言 安全性 可移植性 参考文档 前文列表 <程序编 ...

  7. C 语言编程 — GDB 调试工具

    目录 文章目录 目录 前文列表 代码调试 GDB 启动 GDB 交互命令 运行程序 暂停程序 设置断点 设置观察点 设置捕捉点 打印信息 查询运行信息 分割窗口 前文列表 <程序编译流程与 GC ...

  8. C 语言编程 — 堆栈与内存管理

    目录 文章目录 目录 前文列表 栈(Stack)和堆(Heap) 栈 堆 内存管理 动态分配内存 重新调整内存的大小和释放内存 malloc 函数详解 memset 初始化内存数据 前文列表 < ...

  9. C 语言编程 — 输入/输出与文件操作

    目录 文章目录 目录 前文列表 输入/输出 scanf() 和 printf() getchar() 和 putchar() 文件操作 打开文件 关闭文件 写入文件 读取文件 二进制 I/O 函数 前 ...

最新文章

  1. OFRecord 图片文件制数据集
  2. 海岛奇兵服务器维护费,坑爹啊! 海岛奇兵额外建筑工被疯狂吐槽!
  3. Windows 7 Bcdedit 应用
  4. BoltDB 源码分析
  5. Symfony2Book03:使用Symfony2创建页
  6. 【语义分割】ICCV21_Mining Contextual Information Beyond Image for Semantic Segmentation
  7. python 波形发生_事件与信号
  8. CSharp设计模式读书笔记(10):装饰模式(学习难度:★★★☆☆,使用频率:★★★☆☆)...
  9. scala 单元测试_Scala中的法律测试简介
  10. 科普:SDN(软件定义网络)
  11. (转)LIB和DLL的区别与使用
  12. 三星手机性能测试软件,三星Galaxy S III性能速测:一个字“快”
  13. win7站点服务器配置,IIS 7.0安装配置方法图文教程(win7)
  14. html中最小规格字体,font-size【CSS 字体大小】文字大小尺寸
  15. docker容器获取宿主机IP
  16. Win10系统如何关闭防火墙?
  17. add new color number to the color drop down in enovia PLM
  18. Android系统开发:短信的号码拦截
  19. 【多益网络校招提前批】22届的同学可以冲啦
  20. 1、关于百兆口、千兆口、万兆口端口和网线的小常识

热门文章

  1. mysql部署 linux_linux 怎么部署mysql数据库
  2. linux mint系统分区,Win7删除了linuxmint的系统分区如何恢复
  3. 初步探索创伤性脑损伤后平衡功能障碍的神经机制
  4. eeglab中文教程系列(11)-使用ICA分解数据
  5. Java多线模式-Producer-Consumer模式(生产者、消费者模式)
  6. c语言如何输入汉字_C语言入门的第一个小程序
  7. 一次家庭作业意外搞定40年前的数学猜想,牛津小哥:我只研究了几个礼拜
  8. 用粑粑治疗自闭症!男孩接受6次粪菌移植,目前效果显著
  9. “赶上热词热概念,是我们不幸的一面” | 对话小冰公司CEO李笛
  10. AI,来感受被「分手厨房」支配的恐惧吧!