前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-包和模块-声明和使用包(二)

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

原创
作者头像
堕落飞鸟
发布2023-04-21 14:02:14
4050
发布2023-04-21 14:02:14
举报
文章被收录于专栏:飞鸟的专栏

包的可见性

在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: %d\n", 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类型的实例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 包的可见性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档