此示例旨在演示指针的声明和访问指针指向的变量的值。

以下是我们应用程序的目录结构。

├── parent
│   ├── go.mod
│   ├── main.go
│   └── child
│       └── child.go

进入目录并运行以下命令以创建名为 parent 的go模块。

go mod init parent

上面的命令将创建一个名为go.mod的文件。

#parent\main.go

package main

import (
	"fmt"
	c "parent/child"
)

func main() {
	a := &c.Data
	fmt.Println("Address of Data is", a)
	fmt.Println("Value of Data is", *a)
	*a++
	c.PrintData()
}

我们将子包别名为c。&运算符用于获取变量的地址。在主函数中,我们现在可以使用上面的别名访问数据的地址。我们增加a的值并打印它的值。

文件夹中创建一个文件child.go。子文件夹中的文件应以行包子包开头,因为它属于子包。

# parent\child\child.go
package child

import "fmt"

var Data = 10

func PrintData() {
	fmt.Println("Value of Data is", Data)
}
parent>go run main.go

如果运行该程序,将获得以下输出。

Address of Data is 0x563230
Value of Data is 10
Value of Data is 11