详解Go语言中的导出标识符

 更新时间:2026年11月05日 09:40:54   作者:pan_junbiao  
Go语言中没有public、private关键字,通过标识符首字母大小写区分是否对外暴露,本文介绍Go语言中的导出标识符,感兴趣的朋友跟随小编一起看看吧

Go 语言中的标识符首字母可以大写,如果包中定义的标识符首字母大写,则表示它可以被外部调用,这样的标识符叫作导出标识符。Go 语言中没有 public、private 关键字,通过标识符首字母大小写区分是否对外暴露。如果想在一个包里引用另外一个包里的标识符(如类 型、变量、常量等)时,必须首先将被引用的标识符导出,将要导出的标识符的首字母大写就可以让引用者可以访问这些标识符了。

使用 VS Code,创建 Go 项目,如下图:

创建 chapter02\user\user.go 文件,代码如下:

package user
// 导出变量:首字母大写,外部包可以访问
var Name = "pan_junbiao的博客"
var Age int = 20
// Myfunc 导出函数,首字母大写,外部可以调用
func Myfunc() string {
	address := "广东省深圳市" // address 小写,仅这个函数内部局部变量,和包导出无关
	return address
}
// BlogInfo 导出结构体类型,首字母大写
type BlogInfo struct {
	ID    int    // 大写:导出,包外能读写
	name  string // 小写:未导出,包外【无法读取、无法赋值】
	Title string
	Url   string
}

创建 main.go 文件,代码如下:

package main
import (
	"fmt"
	"go-study/chapter02/user"
)
func main() {
	fmt.Printf("姓名: %s\n", user.Name)
	fmt.Printf("年龄: %d\n", user.Age)
	fmt.Printf("地址: %s\n", user.Myfunc())
	blog := user.BlogInfo{Title: "您好,欢迎访问 pan_junbiao的博客", Url: "https://blog.csdn.net/pan_junbiao"}
	fmt.Printf("博客标题: %s\n", blog.Title)
	fmt.Printf("博客地址: %s\n", blog.Url)
}

执行结果:

由此可见,在导入某个包时,如果包中定义的标识符的首字母大写,则该标识符可以被外部调用。

到此这篇关于Go语言中的导出标识符的文章就介绍到这了,更多相关Go语言导出标识符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang设计模式中抽象工厂模式详细讲解

    Golang设计模式中抽象工厂模式详细讲解

    抽象工厂模式用于生成产品族的工厂,所生成的对象是有关联的。如果抽象工厂退化成生成的对象无关联则成为工厂函数模式。比如本例子中使用RDB和XML存储订单信息,抽象工厂分别能生成相关的主订单信息和订单详情信息
    2023-01-01
  • Golang Gob编码(gob包的使用详解)

    Golang Gob编码(gob包的使用详解)

    这篇文章主要介绍了Golang Gob编码(gob包的使用详解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Golang中的time.Duration类型用法说明

    Golang中的time.Duration类型用法说明

    这篇文章主要介绍了Golang中的time.Duration类型用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Gin中数据解析和绑定的几种方法实现

    Gin中数据解析和绑定的几种方法实现

    本文主要介绍了Gin中数据解析和绑定的几种方法实现,包括Json数据、表单数据和URI数据,每种类型的数据都有其特定的解析和绑定方法,下面就一起来了解一下
    2025-11-11
  • Golang并发之RWMutex的用法详解

    Golang并发之RWMutex的用法详解

    在 Go 语言中,RWMutex 是一种读写互斥锁的实现,它提供了一种简单有效的方式来管理对共享资源的并发访问。本文就来和大家详细聊聊RWMutex的用法吧
    2023-04-04
  • 详解Golang如何优雅的终止一个服务

    详解Golang如何优雅的终止一个服务

    后端服务通常会需要创建子协程来进行相应的作业,但进程接受到终止信号或正常结束时,并没有判断或等待子协程执行结束,下面这篇文章主要给大家介绍了关于Golang如何优雅的终止一个服务的相关资料,需要的朋友可以参考下
    2022-03-03
  • 详解Go语言中的数据类型及类型转换

    详解Go语言中的数据类型及类型转换

    这篇文章主要为大家介绍了Go语言中常见的几种数据类型,以及他们之间的转换方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-04-04
  • 详解如何在Go中使用Zap管理日志

    详解如何在Go中使用Zap管理日志

    Zap提供了两种类型的日志记录器—Sugared Logger和Logger,可以更好的管理日志,这篇文章主要为大家介绍了使用Zap管理日志的具体方法,需要的可以了解一下
    2023-07-07
  • Go1.20最新资讯go arena手动管理内存鸽了

    Go1.20最新资讯go arena手动管理内存鸽了

    由于过于繁杂,Go 核心团队成员@Ian Lance Taylor,也表态:目前尚未做出任何决定,也不可能在短期内做出任何决定,可以认为这个提案基本鸽了,今天这篇文章就是给大家同步目前的情况
    2023-11-11
  • Golang实现HTTP编程请求和响应

    Golang实现HTTP编程请求和响应

    本文主要介绍了Golang实现HTTP编程请求和响应,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论