Golang语言循环、指针、结构体和切片(打卡✏️第二天)|Go主题月(上)

简介: Go 语言循环语句for循环是一个循环控制结构,可以执行指定次数的循环。

1.JPG

Go 语言循环语句



for循环是一个循环控制结构,可以执行指定次数的循环。


for init; condition; post { }


init: 一般为赋值表达式,给控制变量赋初值;

condition: 关系表达式或逻辑表达式,循环控制条件;

post: 一般为赋值表达式,给控制变量增量或减量。


for i:=1;i<100;i++{
    fmt.Println(i)
}

for range



for循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环


for key, value := range oldMap {
    newMap[key] = value
}


求和


var sum = 0
for i:=1;i<100;i++{
    sum+=i
}
fmt.Println(sum) //4950


for省略的形式



省略形式1


sum:=0
for;sum<=100;{
    sum+=sum
}
fmt.Println(sum)


省略形式2


sum:=0
for sum<=10 {
    sum+=sum
}
fmt.Println(sum)


range



str:=[]string{"躲躲","前端开发"}
for i,s :=range str{
    fmt.Println(i,s) //0 躲躲 1 前端开发    
}
numbers :=[6] int{1,2,3,4,5}
for i,s :=range numbers{
    fmt.Println(i,s) //0 1    1 2    2 3    3 4    4 5    5 0
}
numbers :=[]int{1,2,4,5}
for i,s :=range numbers{
    fmt.Println(i,s)
}


函数



1.函数是基本的代码块,用于执行一个任务。

2.Go 语言最少有个 main() 函数。

3.你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。

4.函数声明告诉了编译器函数的名称,返回类型,和参数。

5.Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型


参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。


函数放在main函数里面去执行

func max(num1,num2 int) int{
  return num1+num2
}
fmt.Println(max(1,2))


返回多个参数

func strs(a,b string) (string,string){
    return a,b
}
var a,b= strs("詹躲躲","前端开发") 
fmt.Println(a,b) //詹躲躲 前端开发


函数参数


传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。


func swap(num1,num2 int) int{
    var temp int
    temp = num1
    num1 = num2
    num2 = temp
    return temp
}
ret:=swap(1,10)
fmt.Println(ret) //1


引用传递


引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。


var a int = 100
var b int= 200
swap(&a,&b)
func swap(num1 *int,num2 *int){
    var temp int
    temp = *num1
    *num1 = *num2
    *num2 = temp
    fmt.Println(num1) //0xc0000ac058
}
// var s1,t1 = "abcd", "abcde"
// var s2,t2 = "ae","aea"
// ret:=findTheDifference(s1,t1)
// ret1:=findTheDifference(s2,t2)
// fmt.Println(ret)
// fmt.Println(ret1)
// }
// func findTheDifference(s string, t string) byte {
//     return t[len(s):]
// }


函数作为实参

 

getSqure:=func(x float64) float64{
        return math.Sqrt(x)
    }
    fmt.Println(getSqure(9)) //3


声明一个函数类型


fmt.Println(math.Sqrt(9)) //3
testCallBack(1,CallBack)
type cb func(int) int
func testCallBack(x int,f cb){
    f(x)
}
func CallBack(x int) int{
    fmt.Println(x) //1
    return x
}


变量作用域




作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。

Go 语言中变量可以在三个地方声明:


函数内定义的变量称为局部变量

函数外定义的变量称为全局变量

函数定义中的变量称为形式参数


局部变量


在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。


声明局部变量

var a, b, c int


声明全局变量


var g int


Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。


形式参数


形式参数会作为函数的局部变量来使用。


fmt.Println(math.Sqrt(9)) //3
c:=sum(20,23)
fmt.Println(c) //43
func sum(x,y int)int{
    fmt.Printf("sum中的变量x: %d",x) //20
    fmt.Printf("sum中的变量y: %d",y) //23
    return x+y
}
相关文章
|
3月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
3月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
3月前
|
存储 缓存 监控
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
51 3
|
3月前
|
存储 缓存 安全
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
|
11月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
6月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
514 13
|
8月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
289 4
|
7月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
88 0
|
10月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
10月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上

热门文章

最新文章