不同包中变量、函数、方法、类型公私有问题

优质
小牛编辑
150浏览
2023-12-01

在 Go 语言中通过首字母大小写来控制变量、函数、方法、类型的公私有

  • 如果首字母小写,那么代表私有,仅在当前包中可以使用
  • 如果首字母大写,那么代表共有,其它包中也可以使用
package demo

import "fmt"

var num1 int = 123 // 当前包可用
var Num1 int = 123 // 其它包也可用

type person struct { // 当前包可用
	name string // 当前包可用
	age int // 当前包可用
}

type Student struct { // 其它包也可用
	Name string // 其它包也可用
	Age int // 其它包也可用
}

func test1()  { // 当前包可用
	fmt.Println("test1")
}
func Test2()  { // 其它包也可用
	fmt.Println("Test2")
}

func (p person)say()  { // 当前包可用
	fmt.Println(p.name, p.age)
}
func (s Student)Say()  { // 其它包也可用
	fmt.Println(s.Name, s.Age)
}