Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)
 
    例如:
    visibility/test.go
package visibility
 
import "fmt"
 
const PI = 3.145
const pi = 3.14
const _PI = 3.14
 
var P int = 1
var p int = 1
 
func private_function() {
fmt.Println("only used in this package!")
}
 
func Public_fuction() {
fmt.Println("used in anywhere!")
}
main.go
package main
 
import (
"visibility"
"fmt"
)
 
func main() {
visibility.Public_fuction() //used in anywhere!
//visibility.private_function() //不能访问私有函数,无法通过编译
fmt.Println(visibility.P) //1
//fmt.Println(visibility.p) //不能访问私有变量,无法通过编译
fmt.Println(visibility.PI) //3.14
//fmt.Println(visibility.pi) //不能访问私有常量,无法通过编译
//fmt.Println(visibility._PI) //不能访问私有常量,无法通过编译
}
 
 

golang可见性规则(公有与私有,访问权限)的更多相关文章

  1. 编写Java程序,实现对兵营类的封装,将兵营类中的所有属性设置为私有访问权限,方法设置为公有访问权限

    返回本章节 返回作业目录 需求说明: 实现对兵营类的封装 将兵营类中的所有属性设置为私有访问权限. 将兵营类中所有属性的赋值方法设置为公有访问权限. 要求兵营名称的长度在4-8位之间. 要求兵营士兵的 ...

  2. linux设置防火墙规则-指定ip的访问权限

    vim /etc/sysconfig/iptables 可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统重启iptables时自动执行 1.查看 iptab ...

  3. 窥探Swift之类的继承与类的访问权限

    上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...

  4. Swift 之类的继承与类的访问权限

    http://www.cocoachina.com/swift/20160104/14821.html 上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swi ...

  5. C++中封装和继承的访问权限

    众所周知,C++面向对象的三大特性为:封装,继承和多态.下面我们就先对封装做一些简单的了解.封装是通过C++中的类来完成的,类是一种将抽象转换为用户定义类型的工具.类的定义如下: class circ ...

  6. C# 判断用户是否对路径拥有访问权限

    如何获取当前系统用户对文件/文件夹的操作权限? 1.获取安全信息DirectorySecurity DirectorySecurity fileAcl = Directory.GetAccessCon ...

  7. ThinkingInJava 学习 之 0000005 访问权限控制

    1. 包:库单元 1. 代码组织 2. 创建独一无二的包名 3. 定制工具库 4. 用import改变行为 5. 对使用包的忠告 2. Java访问权限修饰词 1. 包访问权限 2. public : ...

  8. c++继承:公有、私有、保护(对应p12访问限制)

    公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...

  9. [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明

    作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...

随机推荐

  1. JavaScript设计模式与开发实践(二)——apply&&call

    call和apply的用途 改变this指向 先看个例子: var obj1 = { name: 'sven' }; var obj2 = { name: 'anne' }; window.name ...

  2. poj3691 DNA repair[DP+AC自动机]

    $给定 n 个模式串,和一个长度为 m 的原串 s,求至少修改原串中的几个字符可以使得原串中不包含任一个模式串.模式串总长度 ≤ 1000,m ≤ 1000.$ 先建出模式串的AC自动机,然后考虑怎么 ...

  3. https://openmaptiles.org/

    docker save klokantech/tileserver-gl:latest -o tileserver-gl.tar docker load -i tileserver-gl.tar do ...

  4. 【计算机-虚拟wifi】Win7虚拟wifi设置

    虚拟Wifi,可以让电脑变成无线路由器,实现共享上网.   设置步骤 1.以管理员身份运行:cmd.exe   2.启动并设置虚拟网卡:   命令窗口中输入:  netsh wlan set host ...

  5. What is a Digital Signature? 理解数字签名与数字证书

    What is a Digital Signature?An introduction to Digital Signatures, by David Youd Bob (Bob's public k ...

  6. JavaScript一元运算符

    ㈠一元运算符 一元运算符,只需要一个操作数 ⑴+  正号    正号不会对数值产生影响 示例: ⑵-   负号    负号可以对数字进行负号的取反 示例: ⑶对于非Number类型的值,它会将其先转换 ...

  7. B - Problem Arrangement ZOJ - 3777

    Problem Arrangement ZOJ - 3777 题目大意:有n道题,第i道题第j个做可以获得Pij的兴趣值,问至少得到m兴趣值的数学期望是多少,如果没有的话就输出No solution. ...

  8. 牛客训练41D最小相似度bfs

    最小相似度 题目大意:对于位数相同的两个二进制串,SIM(A,B)为它们的相似度,也就是A^B中0的个数.现在给定一堆串,找出一个T使得max{SIM(S1,T),SIM(S2,T),......,S ...

  9. MySQL_(Java)使用JDBC创建用户名和密码校验查询方法

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL数据库中的数据,数据库名garysql,表名garytb,数据库中存在的用户表 通过JDBC对MySQL中的数据用户名和密码 ...

  10. 给string定义一个扩展方法

    创建一个 static 的类,并且里面的方法也必须是static的,第一个参数是被扩展的对象,必须标注为this,使用时,必须保证namespace using进来了. 实例: using Syste ...