• 速战速决 go go 面向对象: 包


    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

    速战速决 go - go 面向对象: 包

    示例如下:

    oop/package1.go

    // 设置当前文件的包名,只需要指定当前文件夹的名称即可,不用写全名
    package oop
    
    // go 可以导入内置包(GOROOT 路径)和第三方包(GOPATH 路径)和自定义包(你自己的路径)
    // go 的可见性控制:
    //    1、如果定义的常量、变量、类型、接口、接口中的方法,结构体、结构体中的成员、函数等的名称是大写字母开头,则表示能被其它包访问或调用,非大写字母开头就只能在包内使用
    //    2、同包名下互相可见所以不能重名
    
    /*
    // 单行导入
    import "fmt"
    // 然后就可以通过导入的包名使用这个包下的东西了
    fmt.Println("xxx")
    */
    
    /*
    // 多行导入
    import (
    	"fmt"
    	"math"
    )
    */
    
    /*
    // 为导入的包指定别名
    import F "fmt"
    // 然后就可以通过别名使用这个包下的东西了
    F.Println("xxx")
    */
    
    /*
    // 以合并的方式导入包
    import . "fmt"
    // 然后就可以直接使用这个包下的东西了
    Println("xxx")
    */
    
    // 导入包时要写全路径
    // 导入包时,会先调用包中的文件的 init 方法
    // 如果 a 导入了 b,b 导入了 c,则先调用 c 中文件的 init 方法,再调用 b 中文件的 init 方法,最后调用 c 中文件的 init 方法
    // 如果同包有多个文件都有 init 方法,则他们的调用顺序不定
    import (
    	// _ 的意思就是你无法使用这个包(但是会调用这个包中的文件的 init 方法)
    	_ "GoSample/oop/pkg1"
    	// 注:因为当前包引用了 GoSample/oop/pkg1,而 GoSample/oop/pkg1 引用了 GoSample/oop/pkg1/pkg2,所以当前包如果被引用后则会打印
    	// pkg2 init
    	// pkg1 init
    )
    
    func Package1Sample() {
    
    }
    
    

    oop/pkg1/go.go

    package pkg1
    
    import (
    	// _ 的意思就是你无法使用这个包(但是会调用这个包中的文件的 init 方法)
    	_ "GoSample/oop/pkg1/pkg2"
    	"fmt"
    )
    
    func init() {
    	fmt.Println("pkg1 init")
    }
    
    

    oop/pkg1/pkg2/go.go

    package pkg2
    
    import "fmt"
    
    func init() {
    	fmt.Println("pkg2 init")
    }
    
    

    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

  • 相关阅读:
    Docker Compose实例
    Jenkins远程执行shell出现java: command not found
    SpringBoot之导入导出Excel
    在Jenkins中配置执行远程shell命令
    XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译
    Elasticsearch集成ik分词器
    AAAAAA
    Logstash-安装logstash-filter-multiline插件(解决logstash匹配多行日志)
    Elastic Kibana文档
    failed to create rwlayer: lstat /var/lib/docker/overlay2/ no such file or directory
  • 原文地址:https://www.cnblogs.com/webabcd/p/go_oop_package1_oop_pkg1_go_oop_pkg1_pkg2_go.html
Copyright © 2020-2023  润新知