zoukankan      html  css  js  c++  java
  • Go 函数、包、mode模式

    Go函数

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("开始")
    
        // 1 函数调用
        //test()
    
        // 2 函数调用
        //方式一
        //a:=10
        //test(a)
        //方式二
        //test(10)
    
        // 3 函数调用
        //test(10,11)
    
        // 4 函数调用
        //a :=test(10,11)
        //fmt.Println(a)
    
        // 5 函数调用(有几个返回值,就必须用几个值来接收)
        //a,b := test(10,11)
        //fmt.Println(a,b)
    
        //第二个参数不接收了(跟python中_不一样,python中_就是一个变量)
        //a,_:=test(10,11)
        //fmt.Println(a,b)
        //fmt.Println(a)
        //fmt.Println(_)
    
        // 6 函数调用
        //test(1,2,3,4,5,6,788,99)
    
        // 7 匿名函数调用(定义在函数内部,没有名字)
        // 放在函数内部,有两种处理方式
            //1 让它执行
            //2 当参数返回
            //否则报错
        //    func (){
        //        fmt.Println("我是匿名函数")
        //    }()
    
        // 8 函数是一等公民
        //test()()
    
        //a:=test()
        //a()
    
        // 9 函数的调用
        //test(10)()
    
        //a:= test(10)
        //a()
    
        // 10 闭包函数高级
    
        //test(99)(88,77)
    
        a:=test(99)
        a(88,77)
    }
    
    
    
    
    // func关键字 函数名(参数1 类型,参数2 类型) {函数体的内容}
    
    //1 定义一个无参数、无返回值的普通函数
    //func test() {
    //    fmt.Println("我是test")
    //}
    
    //2 带一个参数、无返回值
    // go中全是位置参数,没有所谓的关键字参数、默认参数
    //func test(a int)  {
    //    fmt.Println(a)
    //}
    
    //3 带多个参数、无返回值
    //func test(a int,b int)  {
    //    fmt.Println(a+b)
    //}
    //如果两个参数都是同一种类型,就可以简略写
    //func test(a,b int,c string)  {
    //
    //}
    
    //4 带多个参数、只有一个返回值(指明返回参数类型是什么)
    // 返回值类型是int类型
    //func test(a,b int) int{
    //    c := a+b
    //    return c
    //}
    
    //5 带多个参数,多返回值(返回值类型,返回值类型)
    //func test(a,b int)(int,int) {
    //    c :=a+b
    //    d :=a*b
    //    return c,d
    //}
    
    //6 可变长参数
    //func test(a...int)  {
    //    // a是切片
    //    fmt.Println(a)
    //}
    
    //8 函数是一等公民(头等函数),函数也是一种类型
    // 在一门语言中,如果函数可以赋值给一个变量,那函数就叫一等公民
    // 返回值是函数类型
    //func test() func() {
    //    var a func()=func() {
    //        fmt.Println("我是内层函数")
    //    }
    //    return a
    //}
    
    //9 闭包函数
    //func test(b int) func() {
    //    a:= func() {
    //        fmt.Println(b)
    //    }
    //    return a
    //}
    
    //10 闭包函数高级
    func test(b int) func(x,y int){
    
        a := func(x,y int){
            fmt.Println(b+x+y)
        }
        return a
    
    }

    Go 包介绍

    //1 在同一个包下(文件夹下),包名必须一致
    //2 以后,包名就是文件夹的名字
    //3 同一个包下,同名函数只能有一个(init除外)
    //4 一个包(当成一个文件),同一包下的函数,直接调用即可
    //5 导包的位置,从src路径开始
    //6 包只要在src路径下就可以导入
    //7 大写表示导出,在外部包可以使用,小写只能再包内部适应
    //8 使用第三方包:go get github.com/astaxie/beego  (放到gopath的src路径下)
        -python:pip3 install requests
        package main
        import "github.com/astaxie/beego"
    
        func main() {
          beego.Run()
        }

    Go mode模式介绍

    //1 包导入 import . "github.com/astaxie/beego"  类似于python中form xx import *
    //2 包导入 import _ "github.com/go-sql-driver/mysql"  触发init的执行,但是不试用包内的函数
    //3 包导入 import f "fmt"   重命名,以后直接用f
    
    //4 对比python中__init__.py  
    //在代码中导入模块
    import xx   实质上触发__init__.py  的执行(在__init__.py中也可以执行其他代码,对应到go中就是init函数)
    一般情况下,在__init__.py写from xx import 会使用到的函数,导过来
    以后再用 xx.函数()
    
    //5 go mod没有之前,可以设置多个gopath,开发某个项目,切到不同的gopath,类似于虚拟环境
    
    //6 go env
        -GO111MODULE="off"  表示go mod模式是关闭的,则用的是gopath
        -一旦开启了go mod模式,代码不需要放在src路径下(任意位置都可以)
        -在项目路径下要有 go.mod 文件(文件里记录了,go版本,项目依赖的包,包的版本)
        -写代码,建自己的包即可
        -一般情况下,项目有一个main.go  内部是main包,main函数,整个程序的入口
  • 相关阅读:
    理解-NumPy
    python % format
    计算机三级网络技术考过指南
    jquery 增加与删除数组元素
    jquery 改变标签可见状态的几种方式
    pL/SQL 创建DBLIKN
    Oracle 数据类型详解
    状态模式例子---流程控制
    jqGrid 将行的字变成超连接
    表单提交详细介绍
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12747638.html
Copyright © 2011-2022 走看看