Go-包和模块-声明和使用包(二)

2023-04-21 14:02:14 浏览数 (1)

包的可见性

在Go语言中,包中的变量、函数、结构体类型等可以分为两类:可导出(Exported)和不可导出(Unexported)。可导出的标识符(如函数、类型或变量)的名称以大写字母开头,不可导出的则以小写字母开头。只有可导出的标识符可以被其他包中的代码访问和使用,而不可导出的标识符只能在同一包内部使用。

例如,在下面的代码中,我们定义了一个可导出的类型Person和一个不可导出的函数printPerson::

代码语言:javascript复制
package myPackage

import "fmt"

type Person struct {
    Name string
    Age  int
}

func NewPerson(name string, age int) *Person {
    return &Person{name, age}
}

func (p *Person) SayHello() {
    fmt.Printf("Hello, my name is %s, I'm %d years old.n", p.Name, p.Age)
}

func printPerson(p *Person) {
    fmt.Printf("Name: %s, Age: %dn", p.Name, p.Age)
}

在上面的代码中,我们定义了一个可导出的类型Person和一个不可导出的函数printPersonPerson类型包含了一个名为Name的字符串和一个名为Age的整数。我们还定义了一个NewPerson函数来创建Person类型的实例,以及一个SayHello方法来打印出一个人的问候语。printPerson函数是一个不可导出的函数,只能在myPackage包内部使用。

在其他的源代码文件中,如果需要使用myPackage中的类型或函数,需要先将其导入到当前的源代码文件中:

代码语言:javascript复制
package main

import "myPackage"

func main() {
    p := myPackage.NewPerson("Alice", 25)
    p.SayHello()
}

在上面的代码中,我们在main函数中创建了一个名为pPerson类型的实例,并通过调用其SayHello方法来打印问候语。在创建实例时,我们使用了myPackage中的NewPerson函数来创建一个新的Person类型的实例。

go

0 人点赞