go---库源码文件

源文件和库文件放在同一文件夹下

同一个目录下的源码文件都应被声明属于同一个代码包。
源码文件声明的包名可以于其所在目录的名称不同,只要这些文件声明的包名一致就可以了。

demo.go

package main

import (
		"flag"   // 接收和解析命令参数
)

var name string

func init(){
	/*
	第 1 个参数为存储改命令参数值的地址
	第 2 个参数指定命令参数的名称
	第 3 个参数指定在未追加该命令参数时的默认值
	第 4 个参数为该命令参数的简短说明,打印命令时用到
	*/
	flag.StringVar(&name, "name", "everyone", "The greeting object.");
}

// 根据运行程序时给定的参数问候某人
func main(){
	flag.Parse()  // 解析命令参数
	hello(name)
}

demo_lib.go

package main  // 同目录下源码文件的代码包声明一致

import "fmt"

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

在这里插入图片描述

源文件和库文件放在不同文件夹下

demo.go

package main

import (
		"flag"   // 接收和解析命令参数
		"lib"
)

var name string

func init(){
	/*
	第 1 个参数为存储改命令参数值的地址
	第 2 个参数指定命令参数的名称
	第 3 个参数指定在未追加该命令参数时的默认值
	第 4 个参数为该命令参数的简短说明,打印命令时用到
	*/
	flag.StringVar(&name, "name", "everyone", "The greeting object.");
}

// 根据运行程序时给定的参数问候某人
func main(){
	flag.Parse()  // 解析命令参数
	lib.Hello(name)
}

lib/demo_lib.go

package lib

import "fmt"

// 名称的首字母大小的程序体才可以被当前包外的代码引用
// 否则只能被当前包内的其它代码引用
func Hello(name string){
	fmt.Printf("Hello, %s!\n", name)
}

先安装库文件,然后运行程序:
在这里插入图片描述

模块私有

internal 代码包中声明的公开程序实体仅能被该代码包的直接父包及子包中的代码引用

lib/internal/internal.go

package internal

import (
	"fmt"
	"io"
)

// 名称的首字母大小的程序体才可以被当前包外的代码引用
// 否则只能被当前包内的其它代码引用
func Hello(w io.Writer, name string){
	fmt.Fprintf(w, "Hello, %s!\n", name)
}

lib/demo_lib.go

package lib

import (
	"os"
	in "lib/internal"
)

// 名称的首字母大小的程序体才可以被当前包外的代码引用
// 否则只能被当前包内的其它代码引用
func Hello(name string){
	in.Hello(os.Stdout, name)
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值