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

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

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

除了导出类型和函数之外,Go语言中的包还可以包含变量、常量和导出的方法。下面是一个包含变量和常量的示例:

代码语言:javascript
复制
package myPackage

var Message string = "Hello, world!"

const Pi float64 = 3.1415926

func (p *Person) GetAge() int {
    return p.Age
}

在上面的代码中,我们定义了一个名为Message的全局变量和一个名为Pi的常量,它们都是可导出的。我们还在Person类型上定义了一个名为GetAge的方法来获取一个人的年龄。

在其他的源代码文件中,如果需要使用myPackage中的变量或方法,可以按照以下方式导入它们:

代码语言:javascript
复制
package main

import (
    "fmt"
    "myPackage"
)

func main() {
    fmt.Println(myPackage.Message)
    fmt.Println(myPackage.Pi)

    p := myPackage.NewPerson("Alice", 25)
    fmt.Println(p.GetAge())
}

在上面的代码中,我们导入了myPackage包,并打印了其中的变量Message和常量Pi的值。我们还创建了一个Person类型的实例p,并调用其GetAge方法来获取这个人的年龄。

值得注意的是,在Go语言中,包名可以和包所在的目录名不同。例如,我们可以将上面的myPackage包保存在一个名为utils的目录中,并将包名改为utils,代码示例如下:

代码语言:javascript
复制
package utils

var Message string = "Hello, world!"

const Pi float64 = 3.1415926

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)
}

func (p *Person) GetAge() int {
    return p.Age
}

在其他的源代码文件中,我们可以通过以下方式导入这个包:

代码语言:javascript
复制
import "utils"

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

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

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

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

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