Go+内建函数与运算符

简介: 函数是一个代码块,用于执行一个任务。Go+帮我们自动省去了main函数。

函数


函数是一个代码块,用于执行一个任务。Go+帮我们自动省去了main函数。


函数的定义


Go+的函数定义如下:


func 函数名( 参数列表 ) [返回类型] {
   函数体
}
复制代码


  • func:表名这个是一个函数,定义函数的标志。
  • 函数名:给你点函数取一个名字,方便以后调用。
  • 参数列表:传递参数的列表,当你需要给你的方法传递参数的时候,就写在这里,参数的类型、顺序、个数都是可选的,我们也可以定义不含参数函数。
  • 返回类型:函数的返回值类型,函数也可以没有返回值。
  • 函数体:函数具体的实现方法。


我们写一个函数,用于两个数的相加。


func add(num1, num2 int) int {
  return (num1 + num2)
}
复制代码


函数的调用


我们定义函数的作用就是给我们调用的,一个函数被定义出来,如果不经过我们手动调用的话是不会去执行的。调用函数的格式:


函数名 ( 参数列表 )
复制代码


如果我们要调用我们上一个定义的方法的话,可以这些写:


add(1, 2) // 3
复制代码

内建函数


内建函数builtin简单来说就是内置的函数,Go+根据用户的使用频率封装的一个函数,我们前几章就已经用了很多次内建函数了,比如:


println(1)
复制代码


println()函数就是一个内建函数,与之对应的还有print()函数,这两个函数的区别是println()函数会自动换行,而print()函数不会自动换行。像常见的还有len()append()等函数。


运算符


运算符指的是,在程序的运行过程中,程序所进行的数学或者逻辑运算。运算符分为:


  1. 算数运算符。
  2. 关系运算符。
  3. 逻辑运算符。
  4. 位运算符。
  5. 其他运算符


算数运算符


我们假设A为10,B为20。


运算符 描述 实例
+ 相加 A + B 输出结果 30
- 相减 A - B 输出结果 -10
* 相乘 A * B 输出结果 200
/ 相除 B / A 输出结果 2
% 求余 B % A 输出结果 0
++ 自增 A++ 输出结果 11
-- 自减 A-- 输出结果 9
var a int = 21
var b int = 10
var c int
c = a + b
println("c 的值为 ", c) // c 的值为  31
c = a - b
println("c 的值为 ", c) // c 的值为  11
c = a * b
println("c 的值为 ", c) // c 的值为  210
c = a / b
println("c 的值为 ", c) // c 的值为  2  
c = a % b
println("c 的值为 ", c) // c 的值为  1  
a++
println("a 的值为 ", a) // a 的值为  22 
a = 21 
a-- 
println("a 的值为 ", a) // a 的值为  20 
复制代码


关系运算符


我们假设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
var a int = 21
var b int = 10
println(a == b) // false
println(a != b) // true
println(a > b)  // true
println(a < b)  // false
println(a >= b) // true
println(a <= b) // false
复制代码


逻辑运算符


假定 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
var a bool = true
var b bool = false
println(a && b) // false
println(a || b) // true
println(a != b) // true
复制代码


位运算符


假定 A 为60,B 为13。


运算符 描述 实例
& 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 (A & B) 结果为 12, 二进制为 0000 1100
| 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 (A | B) 结果为 61, 二进制为 0011 1101
^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (A ^ B) 结果为 49, 二进制为 0011 0001
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 A << 2 结果为 240 ,二进制为 1111 0000
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 A >> 2 结果为 15 ,二进制为 0000 1111
var a uint = 60 // 60 = 0011 1100
var b uint = 13 // 13 = 0000 1101
var c uint = 0
println(a & b) // 12
println(a | b) // 61
println(a & b) // 12
println(a ^ b) // 49
println(a << b) // 491520
println(a >> b) // 0
复制代码


其他运算符


运算符 描述 实例
& 返回变量存储地址 &a; 将给出变量的实际地址。
* 指针变量。 *a; 是一个指针变量
var a = 4
var ptr *int = &a // ptr 包含了 'a' 变量的地址
println(&a)   // 0x929258 
println(*ptr) // 4



相关文章
|
2月前
|
JSON 安全 网络协议
go语言使用内置函数和标准库
【10月更文挑战第18天】
23 3
|
8月前
|
存储 算法 Go
go语言中的延迟执行函数
【5月更文挑战第13天】`defer`是Go语言中用于延迟执行函数的关键字,尤其适用于资源管理,如文件关闭和锁的释放。它在函数返回前按照LIFO顺序执行,确保资源在任何返回路径下都能正确释放。`defer`可以拦截`panic`并在函数返回前执行,但无法阻止某些致命的`panic`。此外,`defer`可用于修改返回值、输出调试信息和还原变量值。尽管在某些场景下可能影响性能,但Go的优化使得其在多数情况下性能表现良好,特别是在资源清理方面。在Go 1.20及以后的版本,`defer`的性能已显著提升,尤其是在高计算量的场景下。
286 2
|
4月前
|
Go
go函数
go函数
39 10
|
4月前
|
编译器 Go C++
Go to Learn Go之函数
Go to Learn Go之函数
39 0
|
4月前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
5月前
|
Prometheus Cloud Native Go
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
|
5月前
|
安全 编译器 Go
Go 1.21: 泛型函数的全面回顾
Go 1.21: 泛型函数的全面回顾
|
5月前
|
Go
深入理解 Go 中的 new() 和 make() 函数
深入理解 Go 中的 new() 和 make() 函数
|
5月前
|
设计模式 Java 数据库连接
|
5月前
|
Go 开发者