美文网首页
程序实体与代码块

程序实体与代码块

作者: 高鸿祥 | 来源:发表于2019-03-28 19:41 被阅读0次

程序实体

Go语言中的程序实体包括变量、常量、函数、结构体和接口。

代码块

在Go语言中,代码块一般就是一个由花括号括起来的区域,里面开业包含表达式和语句。

Go语言本身以及我们编写的代码共同形成了一个非常大的代码块,即全域代码块。

相对小一些的代码块是代码包,一个代码包可以包含许多子代码包。

每个源码文件也是一个代码块,每个函数也是一个代码块,每个if语句、for语句、switch语句、select语句都是一个代码块,甚至switch语句中的case语句也是一个代码块。

只有两个花括号,里面没有内容也是一个代码块,即空代码块。

Go语言的代码块是一层套一层的,一个代码块可以有若干个子代码块,但对于每个代码块,最多只会有一个直接包含它的代码块,后者简称为前者的外层代码块。

作用域

代码块的划分间接的决定了其中的程序实体的作用域。

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。

Go的作用域是通过代码块来标记的

一个程序实体的作用域总是会被限定在某个代码块中,而这个作用域最大的作用,就是对程序实体的访问权限的控制。

全局变量

如果一个变量在代码块外声明,则被认为是全局变量,可以在整个包甚至外部包(被导出后)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。

局部变量

在代码块内声明的变量称之为局部变量,它们的作用域只在代码块内,函数的参数和返回值变量也是局部变量。

不同的作用域允许使用相同的变量名。同名的局部作用域的变量代码执行完后会释放变量名。

程序实体的访问权限规则

包级私有的、模块级私有的、公开的。

在语言层面依据代码块对程序实体的作用域进行的定义。

前两种访问权限对应的都是代码包代码块,最后一种访问权限对应的是全域代码块。

规则1

名称首字母为大写的程序实体才可以被其他代码包所使用。否则它就只能被当前包内其他代码使用。

首字母大写的程序实体相当于其他语言中声明为public修饰符的实体

其他情况相当于声明为private修饰符的实体

规则2

internal代码包中声明的公开程序实体只能被该代码包的直接父包及其父包的子包中的代码引用。引用前需要先导入此internal包。

对于其他代码包,导入该internal包都是非法的,无法通过编译。

相关文章

  • 程序实体与代码块

    程序实体 Go语言中的程序实体包括变量、常量、函数、结构体和接口。 代码块 在Go语言中,代码块一般就是一个由花括...

  • python基础知识纵览(中)

    python语句语法 程序块与作用域 相同缩进范围的代码在一个程序块和作用域中 同一个程序块和作用域中不能有不同的...

  • java中有几种代码块的对比

    1.局部代码块 局部代码块,又叫普通代码块。它是作用在方法中的代码块。例如: 作用:控制变量的生命周期。 在程序中...

  • 2.1进程的定义、组成、组织方式、特征

    进程实体(静态)的组成 PCB:进程控制块,包含操作系统对进程进行管理所需的各种信息,如程序代码存放位置。是进程存...

  • Live555 源代码分析(五)

    1 主程序 1.1 基本概念与实体 下图展示主程序中涉及的主要概念与实体。 MediaServer是服务器的抽象。...

  • 3、库源码文件

    1、什么是库源码文件 库源码文件是不能直接被运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用在...

  • 【JAVA笔记】“面向对象”之代码块

    程序中使用{}括起来的代码被称之为代码块,根据其位置和声明的不同,可以分为以下几类代码块: 局部代码块 在方法中出...

  • VHDL语法简单总结

    一个VHDL程序代码包含实体(entity)、结构体(architecture)、配置(configuration...

  • Lua学习个人笔记

    1.1程序块:Lua执行的每段代码,例如一个源代码文件或者交互模式中输入的一行代码,都称为一个程序块 1.2注释:...

  • Lua-5.2 学习笔记整理

    1.程序块:一个源代码文件或者一行代码都成为程序块 --代码之间可以使用或者不使用';'作为分隔符--换行不起任何...

网友评论

      本文标题:程序实体与代码块

      本文链接:https://www.haomeiwen.com/subject/gpgcbqtx.html