GO学习笔记 - 包内首字母大写的名称是被导出的,才能被其它包代码调用!

在GO语言的任意包内,如果名称的首字母是大写的,意味着这个名称被导出,在其它包中可以使用“包名.名称”方式来调用,如果名称首字母不是大写,那么只能在这个包内部使用!这个概念还真是和以往接触的编程语言的包和单元都不一样!!

官方教程:https://tour.go-zh.org/basics/3

实例代码:

main.go : 引入了“sunylat/demo”包,调用ShowExport() 演示调用包导出名称。

package main

import(
   "sunylat/demo"
)

func main() {

   //演示首字母大写导出功能
   demo.ShowExport()
}

demo/export.go : 调用mydata包MyFunc() 

/*
演示首字母大写的名称才能被导出
 */
package demo

import (
	"sunylat/mydata"
)

//演示调用其它包中首字母大写的名称
func ShowExport() {
	/*
	这里是快速声明,注意使用符号,可不是“=”
	*/
	inputStr := "这是测试代码,"

	/*
	对于多个变量声明,这种方式应该是更简洁些,类似Delphi里面对变量的集体声明一样,
	不过Go语言声明变量位置更随意,可以在任意地方声明
	*/
	var (
		inputStr2 string
		input     string
	)

	//这是我们在其它语言中常见的变量声明
	//var inputStr2 string
	inputStr2 = "在这里只能调用mydata的MyFunc函数,因为它的首字母大写了!"

	//连接两个字符串
	//var input string
	input = inputStr + inputStr2

	//调用mydata包中的MyFunc函数
	mydata.MyFunc(input)
}

mydata/export.go : 在mydata包中建立的文件,这里只有MyFunc() 可以被其它包中代码调用,test() 则只能在这个包中被调用,MyFunc() 就是调用了 test() 。

/*
首字母大写的名称才能被导出
 */
package mydata

import "fmt"

//首字母大写,表示我要导出这个函数,在包外面的代码可以使用“mydata.MyFunc()”来调用
func MyFunc(inputStr string){
   test(inputStr)
}

//首字母小写,表示这个方法只能在这个包内使用,这个包内的其它代码可以调用它,包外面代码不能调用
func test(inputStr string){
   fmt.Println(inputStr+"\n")
}

运行结果截图:

 

  

  

posted on 2017-02-09 22:58  sunylat  阅读(1485)  评论(0编辑  收藏  举报