当前位置: 首页 > article >正文

go语言的控制语句



1.表达式和运算符
	(1)表达式:必须是一个值
	(2)运算符号:
		-算数
		-比较
		-逻辑
		-赋值

2.控制语句
	(1)if
		if expression1 {

		}else if expression2 {  //满足条件匹配停止
		
		}else if expression3 {
		
		}else {
		
		}
	
	(2)switch
	    switch 变量 {
	    case 常量1:
	        statement1
	    case 常量2:
	        statement2
	    default:
	        default statement
	   }

	(3)for
	    for i := 0; i < 5; i++ {
	    	fmt.Println(i)
	    }
	    
	   for i :=range s{ //s为一个数组
	   }
	(4)break和continue
		break:用于立即退出循环。
		continue:用于跳过当前循环的剩余部分,并开始下一次迭代
3.函数

	(1)基本语法
		func Div(a int, b float64) (float64, string) {
		  //函数名(参数1,参数2) (返回值1,返回值2) 
			return  遇到return程序结束
		}

	(2)可变参数函数
		func sum(nums ...int) {
		    //得到的返回值[100 200 300]
		}
	

	(3)匿名和具名返回值
		func div(a int ,b int)(int,string){
			return res,err
		} 

		func div(a int ,b int)(res int, err string){
			res =0
			err =""
			return 
		} 
	(4)匿名函数:没有变量或者没有名字的函数
		func (){
		}
		
	    将匿名函数赋给一个变量(函数整体当作变量)
	    add := func(a, b int) int {
	    		return a + b
	    	    }
	    fmt.Println(add(5, 3)) // 输出 8

	    匿名函数自调用()
	    add :=func (a,b int){
			return a+b
	   	   }()
	   
          匿名函数作为“参数变量的类型”
		//f:参数,func(int, int):类型,int:函数的返回值类型,int:整体的返回值类型
	     func main() {

		    d :=DoSum(1, 2, func(a int, b int) int {
		            return a+b //函数参数的返回值
		    })
		    fmt.Println(d)
		}

		func DoSum(a, b int, f func(int, int) int) int { //函数作为参数类型自己内部必须调用,调用结果位主函数的计算值
		     return a+b+f(a, b)  //整体的返回值  //f(a,b)通过上面的return得到结果
		}
	    
4.作用域:全局(短变量无法定义在全局作用域),函数级,块级(for,if,{}),包级
	  查找原则:就近原则
	

5.闭包:解决作用域变量的访问,防止全局变量污染
	经常与匿名函数一起使用,闭包可以在一个内层函数中访问到其外层函数的作用域。(先访问外层函数,然后访问函数内部)
	缺点:闭包函数被调用会返回一个新的函数,新的函数不会释放,造成闭包函数不会释放,过多使用闭包会过度占用内存,造成内存泄漏。
	
	例子:
		// fn 函数是一个“返回值为匿名函数”的函数
		func fn() func () int {  //func ()返回值,int返回值类型(具名返回)
		    var m float64 = 100
		    return func () int {// 返回匿名函数,int返回值类型
			  return m;
		    }
		}
		
		func main() {
		    // 调用 fn 函数,将返回的匿名函数赋值给变量 f
		    f := fn()
		    // 调用匿名函数 f,函数内的函数
		    f()
		}	

6.延迟调用(defer):最后执行,但是在return之前。
	func main() {
	    defer fmt.Println("Bye~")
	    fmt.Println("hello world")
	}
	// 运行结果
	hello world
	Bye~

7.init函数:在main函数之前被调用,完成一些初始化操作
	func init() {
    		fmt.Println("init")
	}
	

1.表达式和运算符
    (1)表达式:必须是一个值
    (2)运算符号:
        -算数
        -比较
        -逻辑
        -赋值

2.控制语句
    (1)if
        if expression1 {

        }else if expression2 {  //满足条件匹配停止
        
        }else if expression3 {
        
        }else {
        
        }
    
    (2)switch
        switch 变量 {
        case 常量1:
            statement1
        case 常量2:
            statement2
        default:
            default statement
       }

    (3)for
        for i := 0; i < 5; i++ {
            fmt.Println(i)
        }
        
       for i :=range s{ //s为一个数组
       }
    (4)break和continue
        break:用于立即退出循环。
        continue:用于跳过当前循环的剩余部分,并开始下一次迭代
3.函数

    (1)基本语法
        func Div(a int, b float64) (float64, string) {
          //函数名(参数1,参数2) (返回值1,返回值2) 
            return  遇到return程序结束
        }

    (2)可变参数函数
        func sum(nums ...int) {
            //得到的返回值[100 200 300]
        }
    

    (3)匿名和具名返回值
        func div(a int ,b int)(int,string){
            return res,err
        } 

        func div(a int ,b int)(res int, err string){
            res =0
            err =""
            return 
        } 
    (4)匿名函数:没有变量或者没有名字的函数
        func (){
        }
        
        将匿名函数赋给一个变量(函数整体当作变量)
        add := func(a, b int) int {
                return a + b
                }
        fmt.Println(add(5, 3)) // 输出 8

        匿名函数自调用()
        add :=func (a,b int){
            return a+b
              }()
       
          匿名函数作为“参数变量的类型”
        //f:参数,func(int, int):类型,int:函数的返回值类型,int:整体的返回值类型
         func main() {

            d :=DoSum(1, 2, func(a int, b int) int {
                    return a+b //函数参数的返回值
            })
            fmt.Println(d)
        }

        func DoSum(a, b int, f func(int, int) int) int { //函数作为参数类型自己内部必须调用,调用结果位主函数的计算值
             return a+b+f(a, b)  //整体的返回值  //f(a,b)通过上面的return得到结果
        }
        
4.作用域:全局(短变量无法定义在全局作用域),函数级,块级(for,if,{}),包级
      查找原则:就近原则
    

5.闭包:解决作用域变量的访问,防止全局变量污染
    经常与匿名函数一起使用,闭包可以在一个内层函数中访问到其外层函数的作用域。(先访问外层函数,然后访问函数内部)
    缺点:闭包函数被调用会返回一个新的函数,新的函数不会释放,造成闭包函数不会释放,过多使用闭包会过度占用内存,造成内存泄漏。
    
    例子:
        // fn 函数是一个“返回值为匿名函数”的函数
        func fn() func () int {  //func ()返回值,int返回值类型(具名返回)
            var m float64 = 100
            return func () int {// 返回匿名函数,int返回值类型
              return m;
            }
        }
        
        func main() {
            // 调用 fn 函数,将返回的匿名函数赋值给变量 f
            f := fn()
            // 调用匿名函数 f,函数内的函数
            f()
        }    

6.延迟调用(defer):最后执行,但是在return之前。
    func main() {
        defer fmt.Println("Bye~")
        fmt.Println("hello world")
    }
    // 运行结果
    hello world
    Bye~

7.init函数:在main函数之前被调用,完成一些初始化操作
    func init() {
            fmt.Println("init")
    }
    


http://www.kler.cn/a/590304.html

相关文章:

  • 错误,程序包xxx不存在,Androidstudio报错解析
  • maven核心包:maven-model
  • AI学习第二天--监督学习 半监督学习 无监督学习
  • Maven的继承和聚合
  • 解决 Jupyter Notebook 中本地模块修改不生效的问题
  • 西门子PLC 博图(TIA Portal)与安川机器人进行Modbus TCP通信
  • QuickAPI:如何轻松实现数据库快速导入
  • Python----计算机视觉处理(Opencv:图像颜色替换)
  • Git下载安装(保姆教程)
  • 青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
  • C++高频(二)
  • uniapp实现页面左滑右滑切换内容
  • 【万字总结】构建现代Web应用的全方位性能优化体系学习指南(二)
  • UART转AHB总线接口参考设计介绍
  • CSS3学习教程,从入门到精通,CSS3 属性语法知识点及案例代码(4)
  • 学生选课管理系统数据库设计报告
  • C++学习笔记(二十一)——文件读写
  • 4.JVM-垃圾回收介绍
  • k8s环境部署
  • Kubernetes集群版本升级