`

go语言二——流程与控制

 
阅读更多

条件判断,循环语句

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 语言学习辅导共220页.pdf

    这个示例项目包括了项目结构的建立,以及编写和运行计算斐波那契数列的代码,帮助读者实际操作,更好地理解和掌握Go语言的基本语法和流程控制。 Go语言,又称为Golang,是由Google开发的一种静态类型的、编译型的、...

    Go语言实战 中文高清完整版本pdf

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、强类型编程语言。它旨在提高开发效率,简化系统编程,并且特别适合构建网络服务和大规模分布式系统。Go语言实战这本书是...

    基于golang go语言Gin框架开发的在线客服SAAS系统.zip

    Go语言,也被称为Golang,由Google公司设计,旨在解决大规模并发服务的问题。它具有静态类型、垃圾回收、C-like语法和现代内存管理,同时支持接口和结构体,使得代码结构清晰,易于维护。 2. **Gin框架介绍** Gin...

    Go语言教程 :go语言免费教程网站分享

    本文将详细介绍一个免费的Go语言教程网站——“编程网”,帮助读者深入了解Go语言的基础知识和进阶技巧。 #### 二、Go语言简介 Go语言是一种开源的编程语言,由Google公司的Robert Griesemer、Rob Pike及Ken ...

    成果、价值、进度管理系统——基于golang go语言(beego框架),本系统方便为工程师团队统计工作量,进行成果校审流程

    成果、价值、进度管理系统——基于golang go语言(beego框架),本系统方便为工程师团队统计工作量,进行成果校审流程,对工程师进行价值评测,据此进行效益分配。系统既可以运行于个人电脑,也可以放到服务器上。本...

    go语言之美

    - **过程式编程**:Go语言支持传统的过程式编程模式,这使得开发者可以直接编写简单的函数和流程控制语句。 - **面向对象编程**:虽然Go语言没有传统意义上的类和继承机制,但它通过结构体和接口提供了面向对象的...

    Go语言基础入门教程,并介绍了Go语言编写简单的程序、声明变量、使用流程控制语句、定义函数、使用结构体和方法、进行并发编程等技能

    通过以上知识点的学习,您应该能够掌握Go语言的基本编程技巧,包括编写简单程序、变量声明、流程控制、函数定义、结构体使用以及并发编程等方面的知识。这些技能将为您的后续学习打下坚实的基础。

    go语言学习笔记.zip

    1. **基础知识**:首先了解Go语言的基本语法,包括变量、常量、数据类型、流程控制语句等。 2. **函数和接口**:深入学习函数的使用和接口的概念,理解Go语言的面向接口编程思想。 3. **并发编程**:学习goroutines...

    go语言 代码整理

    在Go语言中,我们首先会接触到基础语法,如变量声明、类型系统(包括基本类型、结构体、接口)、控制流(if、switch、for、range)、函数、方法以及Go语言特有的并发机制——goroutines和channels。 Goroutines是一...

    Go语言游戏服务器框架【Leaf Server】

    【Go语言游戏服务器框架——Leaf Server深度解析】 Go语言,以其高效的并发模型、简洁的语法以及优秀的内存管理,已经成为构建高性能网络服务的首选语言之一。在游戏开发领域,尤其是服务器端,Go语言的优势更是...

    Go语言基础教程:环境设置、语法、数据类型与并发编程

    Go语言的核心要素讲解,例如变量声明方式(var/短变量声明)、常量定义以及不同的控制流程语句(if/else、switch/case、for);数据类型的详细说明,涵盖数字类型(整型、浮点型)、布尔类型、字符串及特殊的数据...

    Go语言练习(贪吃蛇案例)

    - **控制流**:Go语言提供了`if`,`for`,`while`(通过`for`模拟)和`switch`语句进行流程控制。 - **函数**:函数是可重用的代码块,使用`func`关键字声明。Go还支持多返回值和匿名函数。 2. Go语言的并发特性...

    Go-wepay——微信支付gosdk

    而Go-wepay是针对微信支付官方文档开发的一个Go语言实现的SDK,旨在为普通商户提供方便、安全的微信支付接口集成。本文将深入探讨Go-wepay的核心功能、使用方法以及如何将其整合到您的Go应用中。 首先,Go-wepay的...

    Go语言教程及案例.zip

    1. **语言基础**:讲解Go语言的变量、常量、数据类型(如int、float、string、bool)、运算符、流程控制(if、for、switch)、函数、以及Go特有的接口。 2. **结构体与指针**:介绍如何定义和使用结构体,以及指针在...

    zinx —— golang —— MMO游戏服务器开发对应客户端

    本文将深入探讨Zinx框架如何与Golang结合,构建高效且稳定的MMO游戏服务器,并简单介绍客户端的相关内容。 Zinx框架的核心设计理念是模块化和可扩展性。它提供了基本的网络通信模块,支持TCP和UDP协议,方便开发者...

    Golang基础之流程控制习题——李文周老师

    编写代码打印9*9乘法表。 代码如下: ...这讲讲的是Go语言中流程控制部分的内容,goto的用法还是很新颖的(应该是这么说吧),对于我这个Java菜鸡。 附出处:李文周Go基础之流程控制 作者:Villero

    Go Programming - From Beginner to Professional GO语言从入门到精通

    ### GO语言从入门到精通——全面解析 #### 引言 《Go Programming - From Beginner to Professional》这本书由Samantha Coyle撰写,并于2024年由Packt Publishing出版。本书旨在帮助读者全面掌握Go语言,从基础...

    goflow:纯粹的golang工作流程

    作为一款纯Golang实现的工具,`goflow` 充分利用了Go语言的并发特性和轻量级线程——goroutine,使得开发者能够更好地构建并控制复杂的工作流程。 在Go语言中,goroutine是实现并发执行的基础,它们比传统的线程更...

    学习go语言

    《学习Go语言》是一本详尽的教程,旨在引导读者深入了解Google推出的高效、简洁的编程语言——Go(也称为Golang)。本书由Miek Gieben撰写,邢星翻译,并得到了众多贡献者的协助,包括Andrey Mirtchovski、Anthony ...

Global site tag (gtag.js) - Google Analytics