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月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
205 4
|
3月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
221 3
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
250 2
|
3月前
|
存储 Java Go
【Golang】(3)条件判断与循环?切片和数组的关系?映射表与Map?三组关系傻傻分不清?本文带你了解基本的复杂类型与执行判断语句
在Go中,条件控制语句总共有三种if、switch、select。循环只有for,不过for可以充当while使用。如果想要了解这些知识点,初学者进入文章中来感受吧!
175 1
|
5月前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
509 12
|
6月前
|
人工智能 Java Go
golang之数组和切片
本文主要介绍了从 Java 转向 Golang 的开发者在数组和切片上的常见困惑。文章详细解析了数组和切片的底层实现、声明方式、内存结构、初始化方法以及使用场景,重点强调了数组是不可变的值类型,而切片是可变的引用类型,并通过大量代码示例讲解了它们的用法与区别。此外,还探讨了 new() 和 make() 函数的不同用途,帮助开发者更好地理解 Golang 中的数据结构机制。
|
10月前
|
Go 开发者
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
229 3
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
289 4
|
存储 Cloud Native Shell
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
392 6
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
243 4

推荐镜像

更多