zoukankan      html  css  js  c++  java
  • Go语言的流程控制(条件,选择,控制,跳转,闭包)

    1.条件语句:

      跟C和python又不同了Go的if -else是这样的

      if a<5{

        return 0

      }

      else {

        reutrn 1

      }

      1.条件不需要用括号括起来

      2.左边的花括号必须跟if或else一排

      3.在if后条件语句前可以添加变量初始化语句用分号作为间隔

    2.选择语句:

      跟C语言的switch是一样的,但是switch后面的表达式不是必须要的,不同的还有case后面不需要用break来明确退出一个case

      switch 变量{

        case 0:

        case 1:

         ...

        default

    }

    3.循环语句:

      Go语言只支持for循环:

        for i :=0;i<10;i++{
    }

        for 变量;条件;表达式

      当使用无线循环的时候直接使用for{}就行了。在for循环中不支持使用逗号分开来赋值变量,只使用一个符号多重赋值就行了

      Go语言跟C一样同意支持continue和break,但是break可以指定具体的某一个循环

    4.跳转语句:

      goto跳转到函数的某一个标签

    5.函数

     定义   func function_name([parameter list])[return_types]{

            函数体

            return 

        }

        function_name:函数名

        parameter list :参数列表 

        return_types:返回值类型

        Go语言支持多重返回值和错误处理

        如果参数列表有多个相同的可以结合一起申明(a,b int)

      函数的调用

        非常方便的跟python一样只要导入了函数所在的包就可以直接用了

      函数的不定参数:

        1.不定参数的类型:

          不定参数是指函数传入的参数个数不定。首先要在函数定义的时候定位成接受不定参数的类型。

          func myfunc(args ...int){

            for _,arg := range args{

              fmt.Println(arg)

          }

          args ...int表示接受不定参数的数量,且类型全为int类型。

          形如...type的类型只能作为函数的参数类型存在,而且必须只能是最后一个参数,不能有其他参数。它是一种语法糖(syntactic sugar)意思是对于功能没有影响但是更方便程序员用,增加程序的可读性,减少程序出错。

          但是从内部来说  ...type本质上是一个数组切片也就是[ ]type。所以在访问的时候通过数组切片用for循环来访问

         2.不定参数的传递:

           func myfunc(args ..int){

            myfunc3(args...)//将myfunc的参数args直接全部传递给myfunc3

            myfunc3(args[1:]...)//形如切片传送

         3.任意类型的不定参数传递:

          指定类型为interface{}来进行任意类型参数传递则参数列表为(args ...interface{})

         4.多返回值 

            如 func(file *File)Read(b []byte)(n int,err Error)

            可以返回n和err。err返回的是错误信息,如果没有就是nil

         5.匿名函数和闭包:

            匿名函数只是没有名字的函数。跟C不一样的是Go语言中函数也可以当参数传递(跟python是一样的)。匿名函数可以直接复制给一个变量或者执行(只是为了得到返回值)

            闭包:闭包就是能够读取其他函数内部变量的函数,在本质上,闭包是把函数内部和函数外部连接起来的桥梁。

              自我理解,在函数中设定返回类型为匿名函数,则第一次应用变量名就是匿名函数,再调用变量名就是调用匿名函数。这个匿名函数可以引用这个函数中的各种变量。

    #闭包比较难理解自己不懂可以百度

  • 相关阅读:
    Dubbo架构设计及原理详解
    Zookeeper+Dubbo+SpringMVC环境搭建
    Java 延迟队列使用
    深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
    深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
    深入理解Spring Redis的使用 (七)、Spring Redis 使用 jackson序列化 以及 BaseDao代码
    深入理解Spring Redis的使用 (六)、用Spring Aop 实现注解Dao层的自动Spring Redis缓存
    深入理解Spring Redis的使用 (五)、常见问题汇总
    深入理解Spring Redis的使用 (四)、RedisTemplate执行Redis脚本
    深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis
  • 原文地址:https://www.cnblogs.com/beautiful7/p/12364063.html
Copyright © 2011-2022 走看看