• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

示例如下:

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go初探发布时间:2022-07-10
下一篇:
go导入第三方包发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap