学Golang的第三天!

今天学习了如何导包,以及init函数

在go语言中,init相当于类的构造函数,例如,main.go导入了lib1包,那么在导入的时候,就会执行一次lib1包中的init函数

另外,go语言中,定义公共方法不同于其他语言会使用public,是首字母大写的为公共方法

package lib1

import "fmt"

// 首字母大写的函数相当于类的共用方法,小写别的包是调用不到的
func Lib1Test() {
    fmt.Println("手动调用lib1")
}

// 这个在别的包就调用不到
func lib1Test1() {
    fmt.Println("这个是内部方法")
}

// 别的包导入这个包时会执行这个函数,相当于类的构造函数,自动调用
func init() {
    fmt.Println("初始化lib1")
}

然后说到导包,go导包的时候,如果没有使用Go Modules(这里我没学到,所以不详细写了),那么会默认从GOPATH/src目录里面去找你导入的包

所以如果这样导包,那么肯定会报错的
导包错误示例

我当前的项目目录是:GOPATH/src/golang/4-init
目录结构
所以我要导包是这样写:
导包

然后到匿名导包以及别名导包:

package main

import (
    // 这个是匿名导包,只会执行 init 函数,无法调用其他函数
    _ "golang/4-init/lib1"
    // 别名导入
    a2 "golang/4-init/lib2"
)

func main() {
    // lib1.Lib1Test() // 匿名导入将无法调用此函数
    // lib2.Lib2Test()
    // 然后使用别名调用
    a2.Lib2Test()
}
无标签
打赏
评论区
头像