条件判断,循环语句
package main import( "fmt" ) func computeValue() int{ return 20 } func main(){ //条件判断 x := 10 // if 语句不许要括号 if x > 10 { fmt.Println("x is greater than 10") } else if x == 10 { //... ... } else { } // if 条件判断语句里允许声明变量,作用域只能在条件逻辑块内 if y := computeValue(); y > 10 { fmt.Println("y is more than 10",y) } else { fmt.Println("y is less than 10",y) } //fmt.Println("y=",y) // y未声明出错 //循环语句 sum := 0 for i:=0;i<10;i++ { sum += i } fmt.Printf("Sum is %v\n",sum) //for ;i<10; {} //for i<10 {} 等于C++中的while循环功能 //用range关键词实现slice和map的遍历 m_val := map[string] int{"A":1,"B":2,"C":3} for k,v := range m_val { fmt.Printf("Key=%v Val=%v\n",k,v) } switch { case sum < 10: //默认有break fmt.Println("sum < 10") case sum >= 10: fmt.Println("sum >= 10") fallthrough //添加fallthrough后会执行后面的case语句 case sum >= 20: fmt.Println("sum >= 20") default: fmt.Println("default") } }
函数
func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) { //返回多个值 return value1, value2 }
上面的代码我们看出
•关键字 func 用来声明一个函数 funcName
•函数可以有一个或者多个参数,每个参数后面带有类型,通过,分隔
•函数可以返回多个值
•上面返回值声明了两个变量 output1 和 output2,如果你不想声明也可以,直接就
•两个类型
•如果只有一个返回值且不声明返回值变量,那么你可以省略 包括返回值 的括号
•如果没有返回值,那么就直接省略最后的返回信息
•如果有返回值, 那么必须在函数的外层添加 return 语句
//返回一个值 func max(a, b int) int { if a > b { return a } return b } //返回多个值 func SumAndProduct(A, B int) (int, int) { return A+B, A*B } func SumAndProduct(A, B int) (add int, Multiplied int) { add = A+B Multiplied = A*B return } //不定参数 func myfunc(arg1 string, arg2 ...int) { fmt.Println(arg1) for _,n := range arg2 { fmt.Println(n) } } //传值vs传指针 func get_val(a int, b *int){ a += 1 *b += 1 } func main(){ a, b:= 1, 1 get_val(a,&b) fmt.Printf("a=%v,b=%v\n",a,b) }
其他特性:
defer 延迟调用,常用在函数退出回收资源
panic 和 recover 建议少用
Go 里面有两个保留的函数:init 函数(能够应用于所有的 package)和 main 函数(只能应用于 package main)
Go 程序会自动调用 init()和 main(),所以你不需要在任何地方调用这两个函数。每个package 中的 init 函数都是可选的,但 package main 就必须包含一个 main 函数。程序的初始化和执行都起始于 main 包。如果 main 包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到 fmt 包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行 init 函数(如果有的话),依次类推。等所有被导入的包都加载完毕了,就会开始对 main 包中的包级常量和变量进行初始化,然后执行 main 包中的init 函数(如果存在的话),最后执行 main 函数。
相关推荐
这个示例项目包括了项目结构的建立,以及编写和运行计算斐波那契数列的代码,帮助读者实际操作,更好地理解和掌握Go语言的基本语法和流程控制。 Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、...
Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、强类型编程语言。它旨在提高开发效率,简化系统编程,并且特别适合构建网络服务和大规模分布式系统。Go语言实战这本书是...
Go语言,也被称为Golang,由Google公司设计,旨在解决大规模并发服务的问题。它具有静态类型、垃圾回收、C-like语法和现代内存管理,同时支持接口和结构体,使得代码结构清晰,易于维护。 2. **Gin框架介绍** Gin...
本文将详细介绍一个免费的Go语言教程网站——“编程网”,帮助读者深入了解Go语言的基础知识和进阶技巧。 #### 二、Go语言简介 Go语言是一种开源的编程语言,由Google公司的Robert Griesemer、Rob Pike及Ken ...
成果、价值、进度管理系统——基于golang go语言(beego框架),本系统方便为工程师团队统计工作量,进行成果校审流程,对工程师进行价值评测,据此进行效益分配。系统既可以运行于个人电脑,也可以放到服务器上。本...
- **过程式编程**:Go语言支持传统的过程式编程模式,这使得开发者可以直接编写简单的函数和流程控制语句。 - **面向对象编程**:虽然Go语言没有传统意义上的类和继承机制,但它通过结构体和接口提供了面向对象的...
通过以上知识点的学习,您应该能够掌握Go语言的基本编程技巧,包括编写简单程序、变量声明、流程控制、函数定义、结构体使用以及并发编程等方面的知识。这些技能将为您的后续学习打下坚实的基础。
1. **基础知识**:首先了解Go语言的基本语法,包括变量、常量、数据类型、流程控制语句等。 2. **函数和接口**:深入学习函数的使用和接口的概念,理解Go语言的面向接口编程思想。 3. **并发编程**:学习goroutines...
在Go语言中,我们首先会接触到基础语法,如变量声明、类型系统(包括基本类型、结构体、接口)、控制流(if、switch、for、range)、函数、方法以及Go语言特有的并发机制——goroutines和channels。 Goroutines是一...
【Go语言游戏服务器框架——Leaf Server深度解析】 Go语言,以其高效的并发模型、简洁的语法以及优秀的内存管理,已经成为构建高性能网络服务的首选语言之一。在游戏开发领域,尤其是服务器端,Go语言的优势更是...
Go语言的核心要素讲解,例如变量声明方式(var/短变量声明)、常量定义以及不同的控制流程语句(if/else、switch/case、for);数据类型的详细说明,涵盖数字类型(整型、浮点型)、布尔类型、字符串及特殊的数据...
- **控制流**:Go语言提供了`if`,`for`,`while`(通过`for`模拟)和`switch`语句进行流程控制。 - **函数**:函数是可重用的代码块,使用`func`关键字声明。Go还支持多返回值和匿名函数。 2. Go语言的并发特性...
而Go-wepay是针对微信支付官方文档开发的一个Go语言实现的SDK,旨在为普通商户提供方便、安全的微信支付接口集成。本文将深入探讨Go-wepay的核心功能、使用方法以及如何将其整合到您的Go应用中。 首先,Go-wepay的...
1. **语言基础**:讲解Go语言的变量、常量、数据类型(如int、float、string、bool)、运算符、流程控制(if、for、switch)、函数、以及Go特有的接口。 2. **结构体与指针**:介绍如何定义和使用结构体,以及指针在...
本文将深入探讨Zinx框架如何与Golang结合,构建高效且稳定的MMO游戏服务器,并简单介绍客户端的相关内容。 Zinx框架的核心设计理念是模块化和可扩展性。它提供了基本的网络通信模块,支持TCP和UDP协议,方便开发者...
编写代码打印9*9乘法表。 代码如下: ...这讲讲的是Go语言中流程控制部分的内容,goto的用法还是很新颖的(应该是这么说吧),对于我这个Java菜鸡。 附出处:李文周Go基础之流程控制 作者:Villero
### GO语言从入门到精通——全面解析 #### 引言 《Go Programming - From Beginner to Professional》这本书由Samantha Coyle撰写,并于2024年由Packt Publishing出版。本书旨在帮助读者全面掌握Go语言,从基础...
作为一款纯Golang实现的工具,`goflow` 充分利用了Go语言的并发特性和轻量级线程——goroutine,使得开发者能够更好地构建并控制复杂的工作流程。 在Go语言中,goroutine是实现并发执行的基础,它们比传统的线程更...
《学习Go语言》是一本详尽的教程,旨在引导读者深入了解Google推出的高效、简洁的编程语言——Go(也称为Golang)。本书由Miek Gieben撰写,邢星翻译,并得到了众多贡献者的协助,包括Andrey Mirtchovski、Anthony ...