zoukankan      html  css  js  c++  java
  • 函数高级、类型名别名、if-else 的使用、包的使用、for循环、swich的使用、数组的使用

    一、函数高级:

    1、闭包函数:定义在函数内部,对外部作用有引用

    2、go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字

    //函数高级
    package main
    
    import "fmt"
    
    //闭包函数:定义在函数内部,对外部作用有引用
    
    //内层函数:定义在函数内部的函数
    //go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字
    //func test(a int)  {
    //    func() {
    //        fmt.Println("我是内层函数")
    //    }()
    //}
    //闭包函数
    //func test(a int) (func()) {
    //    //var c int =100
    //    b:=func() {
    //        fmt.Println(a)
    //        fmt.Println("我是闭包函数")
    //    }
    //    return b
    //}
    // 定义一个函数,传入函数,返回函数
    //func test(a func()) func()  {
    //    b:= func() {
    //        fmt.Println("我先执行")
    //        a()
    //        fmt.Println("函数执行完了")
    //    }
    //    return b
    //}
    //func test2()  {
    //    fmt.Println("xxxx")
    //
    //}
    函数高级使用

    类型名别名:

    //给类型命别名
    type MyFunc  func(a int,b int) func()
    
    type MyInt int
    func test() (MyFunc)  {
    
        c:= func(a int,b int) func(){
    
            return func() {
    
            }
        }
        return c
    
    }
    func main() {
        //a:=test(3)
        //a()
        //a:=test2
        //a=test(a)
        //a()
           //此处的MyInt 和 int不是同一种数据类型
        var a MyInt=10
        var b int =90
        a=MyInt(b)
        fmt.Println(a)
    }
    类型名别名

    二、if-else的使用:

    1、大括号和条件之间不能换行

    2、在条件中可以定义变量,但是它的作用于范围只在if判断内部使用

    //if -else
    package main
    
    import "fmt"
    
    func main() {
        //a := 90
    
        //if  条件{}    大括号和条件之间不能换行
        //if a == 90{
        //    fmt.Println("a 是90");
        //}
        //if a >90{
        //    fmt.Println("a 大于90")
        //}else if a<90{
        //    fmt.Println("a 小于90")
        //}else {
        //    fmt.Println("a 等于90")
        //}
    
        //在条件中可以定义变量,但是它的作用于范围只在if判断内部使用
        if a :=90;a>90{
            fmt.Println("大于")
        }else if a==90{
            fmt.Println(a)
        }
        //fmt.Println(a)
    }
    if-else

    三、包的使用:

    1、package mypackage  //通常情况下,包名就是文件夹名,在同一个文件夹下,包名必须一致

    2、//在同一个包下,变量,函数,都不能重复定义

    //在包内定义的函数如果是小写字母开头,表示只能在包内部使用
    //在外部包想使用,必须首字母大写

    package mypackage
    
    import "fmt"
    //在同一个包下,变量,函数,都不能重复定义
    //在包内定义的函数如果是小写字母开头,表示只能在包内部使用
    //在外部包想使用,必须首字母大写
    func Test1()  {
        fmt.Println(test(1,2))
        fmt.Println("xxxx")
    }
    mypackage.go
    // 包的使用
    package main
    
    import "mypackage"
    import "fmt"
    
    
    
    func main() {
    
        //想使用mypackage包下的test函数和test1函数
        //函数名必须首字母大写
        mypackage.Test1()
        fmt.Println("xxx")
    包的引用

    四、for 循环的使用:

    //for 循环
    package main
    
    func main() {
        //for initialisation; condition; post {
        //}
        //for i:=0;i<10;i++{
        //    fmt.Println(i)
        //}
        //三部分,都可以省略
        //先省略第一部分
        //i :=0
        //for ;i<10;i++{
        //    fmt.Println(i)
        //}
        //省略第三部分
        //i :=0
        //for ;i<10;{
        //    i++
        //    fmt.Println(i)
        //}
        //省略第二部分
        //for ;;{
        //    fmt.Println("xxxx")
        //}
        //死循环
        //for {
        //    fmt.Println("xxxx")
        //}
        //只写条件 for 条件{}  等同于while循环
        //
        //for {
        //
        //    fmt.Println("sdffsdsa")
        //}
        //break和continue跟其他任何语言都一样
    
        //for i:=0;i<10;i++{
        //    if i==5{
        //        break
        //    }
        //    fmt.Println(i)
        //}
        //for i:=0;i<10;i++{
        //    if i==5{
        //        continue
        //    }
        //    fmt.Println(i)
        //}
    
    }
    for循环的使用

    五、swich语句:

    //switch语句
    package main
    
    import "fmt"
    
    func main() {
        //基本用法
        //a:=10
        //switch a {
        //case 1:
        //    fmt.Println("1")
        //case 2:
        //    fmt.Println("2")
        //case 10:
        //    fmt.Println("10")
        //
        //}
        //default
        //a:=11
        //switch a {
        //case 1:
        //    fmt.Println("1")
        //case 2:
        //    fmt.Println("2")
        //case 10:
        //    fmt.Println("10")
        //default:
        //    fmt.Println("不知道")
        //}
        //多值匹配
        //a:=11
        //switch a {
        //case 1,4,5:
        //    fmt.Println("1")
        //case 2,8,9:
        //    fmt.Println("2")
        //case 10,11:
        //    fmt.Println("10")
        //default:
        //    fmt.Println("不知道")
        //}
        //无表达式的 switch
        //a:=11
        //switch  {
        //case a>10:
        //    fmt.Println("大于10")
        //case a<10:
        //    fmt.Println("小于10")
        //default:
        //    fmt.Println("10")
        //
        //Fallthrough
    
    
    
        a:=10
        switch a {
        case 1:
            fmt.Println("1")
            fmt.Println("xxxx")
        case 2:
            fmt.Println("2")
        case 10:
            fmt.Println("10")
            //穿透,无条件执行下一个case的内容
            fallthrough
        case 11:
            fmt.Println("11")
            test5()
            fallthrough
        case 12:
            fmt.Println("12")
        }
    
    
    }
    
    func test5()  {
        fmt.Println("xxxxxx")
    
    }
    swich

    六、数组的使用:

    1、数组 在定义阶段,长度和类型就固定了,以后不能更改

    2、数组是值类型

    所有的函数传参都是copy传递

    //数组 在定义阶段,长度和类型就固定了,以后不能更改
    package main
    
    import "fmt"
    
    func main() {
        //var a [5]int  //定义了一个长度为5的int类型数组
        //a[1]=100   //把2个位置放上100
        //fmt.Println(a)
        //定义并赋初值
        //var a [6]int=[6]int{1,2,3,4,5,6}
        //var a =[6]int{1,2,3}
        //a :=[6]int{1,2,3}
        //a[5]=100
        //fmt.Println(a)
        //第99个位置设为99
        //a :=[100]int{1,2,98:99,87:88}
        ////a[-9]=19  不支持
        //fmt.Println(a)
    
        //数组是值类型
        //所有的函数传参都是copy传递
        //a:=[4]int{1,2,3}
        //test6(a)
        //fmt.Println(a)
    
        //数组的长度 内置函数len
        //a:=[4]int{1,2,3}
        //fmt.Println(len(a))
        //数组大小是类型一部分
        //var a [4]int=[4]int{1,2,}
        //var b [5]int=[5]int{4,5,}
        //a=b
        //fmt.Println(a)
        //与或非
        //&&   ||//a:=10
        //if !(a>9||a<6){
        //
        //}
        //数组迭代
        //var a [4]int=[4]int{1,2,}
        //for i:=0;i<len(a);i++{
        //    fmt.Println(a[i])
        //}
        //通过range迭代
        //for i,v:=range a {
        ////for i:=range a {
        //    fmt.Println("------",i)
        //    fmt.Println(v)
        //}
        //多维数组
        var a [7][2]int
        a[0][1]=100
        fmt.Println(a)
    
    
    
    }
    func test6(b [4]int)  {
        b[0]=100
        fmt.Println(b)
    }
    数组
  • 相关阅读:
    用代码初始化AE控件许可
    打开shpfile,mdb,sde工作空间
    UESTC_Tournament CDOJ 124
    UESTC_Little Deer and Blue Cat CDOJ 1025
    UESTC_Judgment Day CDOJ 11
    UESTC_One Step Two Steps CDOJ 1027
    UESTC_In Galgame We Trust CDOJ 10
    UESTC_贪吃蛇 CDOJ 709
    UESTC_冰雪奇缘 CDOJ 843
    java 常用API 时间
  • 原文地址:https://www.cnblogs.com/yangjiaoshou/p/12017381.html
Copyright © 2011-2022 走看看