Go编程——变量、函数导出与首字母大写

原创 2015年07月07日 14:42:26

标识符可被 导出 以允许从另一个包访问。

同时符合以下条件即为已导出标识

1、标识符名的第一个字符为Unicode大写字母(Unicode类别“Lu”);

2、该标识符在包块中已声明或为字段名或方法名。

以程序导入gotest/even包为例

package main

import (
  "even"
  "fmt"
)

func main() {
  i:=even.I
  fmt.Printf("Is %d even? %v\n", i, even.Even(i))
}
package even

var I int = 123

 func Even(i int) bool {
   return i%2==0
}

func odd(i int) bool {
   return i%2!=0
}

1.本地包 even 在这里导入;

2. 官方 fmt 包导入;

3. 调用 even 包中的函数。 访问一个包中的函数的语法是 <package>.Function (), 变量 <package>.Var 

在 Go 中,当 变量或函数的首字母大写 的时候, 函数会被从包中导出(在包外部可见, 或者说公有的 ),因此函数名是 Even。如果修改main.go 的第 10 行,使用未导出的函数 even.odd:

fmt.Printf("Is %d even? %v\n", i, even.odd(i))

由于使用了私有的函数,会得到一个编译错误:

main.go:10: cannot refer to unexported name even.odd

概括来说:

公有函数的名字以大写字母开头;

私有函数的名字以小写字母开头。

对于结构体

type S struct {

T1       //字段名字是 T1

*T2     //字段名字是 T2

P.T3   //字段名字是 T3

x, y int  //字段名字是 x 和 y

}

同样,首字母大写的字段可以被导出,也就是说,在其他包中可以进行读写。字 段名以小写字母开头是当前包的私有的,函数定义也是类似的。

对于T1, *T2等匿名字段,其作用是“如果结构体 S,包含一个匿名字段 T1,那么这个结构体 S 就有了 T1的方法。如果包含的匿名字段为 *T2,那么这个结构体 S 就有了 *T2 的方法。”具体见另一篇文章http://blog.csdn.net/typ2004/article/details/41605083

(golang 匿名字段)。

Go编程——变量、函数导出与首字母大写

标识符可被 导出 以允许从另一个包访问。 同时符合以下条件即为已导出标识 1、标识符名的第一个字符为Unicode大写字母(Unicode类别“Lu”); 2、该标识符在包块中已声明或为字段名或方法名...
  • typ2004
  • typ2004
  • 2014年11月29日 23:09
  • 3936

JS笔记——首字母设置大写

新手笔记

词组缩写 英语句子所有单词首字母大写输出 C语言/C++编程题

题目描述 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。 比如,C语言里常用的EOF就是end of file的缩写。 输入 输入的第一行是一个整数T,表示一共有T组...
  • ESESZB
  • ESESZB
  • 2016年06月18日 17:52
  • 2371

将字符串中各单词首字母转化成大写,使用回调函数实现[函数指针]

很久以前,复习C语言的时候写的了。。 通过回调函数来做修改首字母 // // main.m // 15HW_2 // // Created by Hui on 13-1-5. // Cop...

中文汉字转拼音——大写(默认),小写,首字母大写

汉字转拼音

汉字转换拼音、首字母大写

  • 2013年12月26日 17:16
  • 2KB
  • 下载

VC++入门-首字母大写自动转换程序

  • 2012年05月06日 14:06
  • 9.39MB
  • 下载

使用jQuery 把一个JSP文件中的所有id名字替换成以b开头,再加上原来的名字(首字母变为大写)

尊重原创,转载请注明出处:http://blog.csdn.net/lyz19890927/article/details/7784886 [javascript] view p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Go编程——变量、函数导出与首字母大写
举报原因:
原因补充:

(最多只允许输入30个字)