Go语言包特性

Go语言包的特性总结:

  • 包声明和导入

    • 每个Go源文件都以package声明开头,指定文件所属的包。
    • 使用import关键字导入其他包,以便在当前包中使用其功能。
  • 包的命名和可见性

    • 包的命名由其导入路径决定。
    • 包的可见性由标识符的大小写决定,大写字母开头的标识符为公共的,可以被其他包访问。
  • 包的组织

    • 每个包通常位于单独的目录下,包名与目录名相同。
    • 一个目录下可以包含多个包,但每个包必须位于单独的子目录中。
  • main包和入口函数

    • 每个可执行的Go程序必须包含一个名为main的包。
    • main包中必须包含一个名为main的函数作为程序的入口点。
  • init函数

    • 每个包可以包含一个或多个init函数,用于初始化包内的状态。
    • init函数在包被导入时自动执行。
  • 包的引用

    • 引用其他包时可以使用相对路径或绝对路径。
    • 使用相对路径时,是相对于当前文件所在目录的路径。
    • 使用绝对路径时,是基于$GOPATH/src目录或当前模块的根目录的路径。
  • 包的重命名

    • 如果导入的包名冲突,可以通过重命名导入来解决冲突。
  • 导入包的副作用

    • 可以使用下划线 _ 来替代导入包时的名称,以避免编译器报错。
  • 处理包名重复

    • 解决包名重复的方法包括重命名导入、移动文件、删除重复包和使用Vendor目录。

代码示例:

// main.go
package main

import (
    "fmt" // 导入fmt包,用于输出
    mypkg "path/to/mypackage" // 重命名导入,将mypackage包重命名为mypkg
    _ "path/to/unusedpackage" // 使用下划线忽略导入包的副作用
)

func main() {
    fmt.Println("Hello, world!") // 使用fmt包中的Println函数输出
    mypkg.DoSomething() // 调用mypkg包中的DoSomething函数
}
// mypackage.go
package mypackage

import "fmt"

func DoSomething() {
    fmt.Println("Doing something...") // 输出消息
}
// unusedpackage.go
package unusedpackage

import "fmt"

func init() {
    fmt.Println("This package does something during initialization.") // 在初始化时输出消息
}
// anotherpackage.go
package anotherpackage

import "mypackage" // 导入mypackage包

func main() {
    mypackage.DoSomething() // 调用mypackage包中的DoSomething函数
}
$ go run main.go
Hello, world!
Doing something...
This package does something during initialization.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值