当前位置:网站首页>Go语言条件,循环,函数
Go语言条件,循环,函数
2022-04-23 15:34:00 【世界尽头与你】
1.条件
if/else
package main
import "fmt"
func main() {
var a int = 521
if a == 521 {
fmt.Println("我爱你")
} else {
fmt.Println("我不爱你")
}
}
--------------------------
输出:我爱你
switch-case
switch var1 {
case val1:
...
case val2:
...
default:
...
}
select 语句
select
随机执行一个可运行的 case
。如果没有 case
可运行,它将阻塞,直到有 case
可运行。一个默认的子句应该总是可运行的。
select {
case communication clause :
statement(s);
case communication clause :
statement(s);
/* 你可以定义任意数量的 case */
default : /* 可选 */
statement(s);
}
以下描述了 select
语句的语法:
- 每个
case
都必须是一个通信 - 所有
channel
表达式都会被求值 - 所有被发送的表达式都会被求值
- 如果任意某个通信可以进行,它就执行,其他被忽略。
- 如果有多个
case
都可以运行,Select
会随机公平地选出一个执行。其他不会执行。
否则:
如果有default
子句,则执行该语句。
如果没有default
子句,select
将阻塞,直到某个通信可以运行;Go 不会重新对channel
或值进行求值。
2.循环语句
for
循环是一个循环控制结构,可以执行指定次数的循环。
实例1:计算 1 到 10 的数字之和
package main
import "fmt"
func main() {
sum := 0
for i := 0; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
}
------------------------------------
输出:55
实例2:无限循环
package main
import "fmt"
func main() {
sum := 0
for {
sum += 1
}
fmt.Println(sum)
}
要停止无限循环,可以在命令窗口按下ctrl-c
。
实例3:For-each range
循环
package main
import (
"fmt"
)
func main() {
strings := []string{
"imustctf", "wode"}
for i, s := range strings {
fmt.Println(i, s)
}
}
---------------------------------------
输出:
0 imustctf
1 wode
实例4:类似的while
循环,在 sum 小于 10 的时候计算 sum 自相加后的值:
package main
import "fmt"
func main() {
sum := 1
for sum <= 10 {
sum += sum
}
fmt.Println(sum)
}
-----------------------------
输出:16
3.函数
实例1:函数传入两个整型参数 num1 和 num2,并返回这两个参数的最大值
package main
import "fmt"
func max(num1, num2 int) int {
// 声明局部变量
var result int
if num1 > num2 {
result = num1
} else {
result = num2
}
return result
}
func main() {
var a int = 100
var b int = 200
res := max(a, b)
fmt.Println(res)
}
-----------------------------
输出:200
实例2:函数返回多个值
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("a", "b")
fmt.Println(a, b)
}
--------------------------------
输出:b a
实例3:引用传递指针参数
package main
import "fmt"
func swap(x *int, y *int) {
var temp int
temp = *x /* 保存 x 地址上的值 */
*x = *y /* 将 y 值赋给 x */
*y = temp /* 将 temp 值赋给 y */
}
func main() {
a, b := 100, 200
fmt.Println(a, b)
swap(&a, &b)
fmt.Println(a, b)
}
-----------------------------------
输出:
100 200
200 100
版权声明
本文为[世界尽头与你]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Gherbirthday0916/article/details/124301725
边栏推荐
- Do keyword search, duplicate keyword search, or do not match
- Precautions for use of dispatching system
- Connect PHP to MSSQL via PDO ODBC
- 考试考试自用
- 通过 PDO ODBC 将 PHP 连接到 MySQL
- adobe illustrator 菜單中英文對照
- Explanation of redis database (III) redis data type
- el-tree实现只显示某一级复选框且单选
- T2 iCloud日历无法同步
- Comparaison du menu de l'illustrateur Adobe en chinois et en anglais
猜你喜欢
自主作业智慧农场创新论坛
About UDP receiving ICMP port unreachable
【Leetcode-每日一题】安装栅栏
Detailed explanation of MySQL connection query
T2 iCloud日历无法同步
让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了
Analysis of common storage types and FTP active and passive modes
Basic concepts of website construction and management
cadence SPB17. 4 - Active Class and Subclass
Functions (Part I)
随机推荐
通过 PDO ODBC 将 PHP 连接到 MSSQL
如何设计一个良好的API接口?
How to design a good API interface?
[backtrader source code analysis 18] Yahoo Py code comments and analysis (boring, interested in the code, you can refer to)
Explanation of redis database (I)
网站压测工具Apache-ab,webbench,Apache-Jemeter
Knn,Kmeans和GMM
Detailed explanation of kubernetes (XI) -- label and label selector
Compiling OpenSSL
Summary of interfaces for JDBC and servlet to write CRUD
Deep learning - Super parameter setting
Elk installation
How to test mobile app?
cadence SPB17. 4 - Active Class and Subclass
软件性能测试报告起着什么作用?第三方测试报告如何收费?
setcontext getcontext makecontext swapcontext
Kubernetes详解(十一)——标签与标签选择器
el-tree实现只显示某一级复选框且单选
Openstack theoretical knowledge
kubernetes之常用Pod控制器的使用