Go语言核心36讲(Go语言基础知识三)--学习笔记

本文介绍了如何将Go语言命令源码文件中的代码拆分到其他库源码文件,强调了库源码文件的特性,以及代码包声明、导入路径和程序实体访问权限的规则。通过实例解释了包声明一致性、导入路径与实际使用的限定符匹配、以及首字母大小写决定访问权限的原则。最后,提到了内部包(internal)作为额外的访问权限控制手段。
摘要由CSDN通过智能技术生成

03 | 库源码文件

在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。

这里的“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。

那么程序实体是什么呢?在 Go 语言中,程序实体是变量、常量、函数、结构体和接口的统称。我们总是会先声明(或者说定义)程序实体,然后再去使用。

比如在上一篇的例子中,我们先定义了变量name,然后在main函数中调用fmt.Printf函数的时候用到了它。

回到正题。

我们今天的问题是:怎样把命令源码文件中的代码拆分到其他库源码文件?

我们用代码演示,把这个问题说得更具体一些。

如果在某个目录下有一个命令源码文件 demo4.go,如下:

package main

import (
  "flag"
)

var name string

func init() {
  flag.StringVar(&name, "name", "everyone", "The greeting object.")
}

func main() {
  flag.Parse()
  hello(name)
}

其中的代码你应该比较眼熟了。我在讲命令源码文件的时候贴过很相似的代码,那个源码文件名为 demo2.go。

这两个文件的不同之处在于,demo2.go 直接通过调用fmt.Printf函数打印问候语,而当前的 demo4.go 在同样位置调用了一个叫作hello的函数。

函数hello被声明在了另外一个源码文件中,我把它命名为 demo4_lib.go,并且放在与 demo4.go 相同的目录下。如下:

// 需在此处添加代码。[1]

import "fmt"

func hello(name string) {
  fmt.Printf("Hello, %s!\n", name)
}

那么问题来了:注释 1 处应该填入什么代码?

典型回答

答案很简单,填入代码包声明语句package main。为什么?我之前说过,在同一个目录下的源码文件都需要被声明为属于同一个代码包。

如果该目录下有一个命令源码文件&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值