美文网首页
GO学习笔记——程序结构(1)

GO学习笔记——程序结构(1)

作者: 定海小蜗牛 | 来源:发表于2016-06-18 23:10 被阅读21次

程序结构

命名

  • 如果一个名字是在函数内部定义,那么它的就只在函数内部有效。如果是在函数外部定义,那么将在当前包的所有文件中都可以访问。

  • 名字的开头字母的大小写决定了名字在包外的可见性。大写外部可以访问,小写包内访问。包名一般小写。

声明

  • Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。

  • 每个源文件以包的声明语句开始,说明该源文件是属于哪个包。包声明语句之后是import语句导入依赖的其它包,然后是包一级的类型、变量、常量、函数的声明语句,包一级的各种类型的声明语句的顺序无关紧要。

变量

变量声明的一般语法如下:

var 变量名字 类型 = 表达式

其中“类型”或“= 表达式”两个部分可以省略其中的一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。如果初始化表达式被省略,那么将用零值初始化该变量。

简短变量声明

  • 在函数内部,有一种称为简短变量声明语句的形式可用于声明和初始化局部变量。它以“名字 := 表达式”形式声明变量,变量的类型根据表达式来自动推导

  • 请记住“:=”是一个变量声明语句,而“=”是一个变量赋值操作。

  • 简短变量声明语句对已经声明过的变量只有赋值行为。但简短变量声明语句中必须至少要声明一个新的变量。而且简短变量声明语句只有对已经在同级词法域声明过的变量才和赋值操作语句等价,如果变量是在外部词法域声明的,那么简短变量声明语句将会在当前词法域重新声明一个新的变量。

指针

一个指针的值是另一个变量的地址。一个指针对应变量在内存中的存储位置

new函数

  • 表达式new(T)将创建一个T类型的匿名变量,初始化为T类型的零值,然后返回变量地址,返回的指针类型为*T
  • 由于new只是一个预定义的函数,它并不是一个关键字,因此我们可以将new名字重新定义为别的类型。
  • 例子:

func delta(old, new int) int { return new - old }

  • 由于new被定义为int类型的变量名,因此在delta函数内部是无法使用内置的new函数的

变量的生命周期

变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。

  • 包一级声明的变量,生命周期和整个程序的运行周期是一致的
  • 局部变量的声明周期则是动态的:从每次创建一个新变量的声明语句开始,直到该变量不再被引用为止,然后变量的存储空间可能被回收

相关文章

  • GO学习笔记——程序结构(1)

    程序结构 命名 如果一个名字是在函数内部定义,那么它的就只在函数内部有效。如果是在函数外部定义,那么将在当前包的所...

  • Go语言开发资料收集

    【Go 边看边练 -《Go 学习笔记》】系列Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量Go 边看...

  • Go学习-程序结构

    Go程序结构 命名 一个名字必须以字母或下划线开头;后面可以跟任意数量的字母、数字、下划线 区分字母大小写 变量的...

  • Go语言学习笔记---程序结构

    2.1命名:以下划线或者是Unicode字母开头命名,注意:在Go中命名区分大小写;2.2声明:(1)在Go中主要...

  • go http学习笔记

    go http学习笔记 @[goweb, go, http] 1.go http基础 go http服务器简例 h...

  • GO——学习笔记(五)

    上篇:GO——学习笔记(四) 下篇:GO——学习笔记(六) 示例代码——go_4 https://github.c...

  • GO学习笔记(7) - 自建队列代码

    扩展已有类型的 程序结构 代码 go.mod queue/queue.go queue/entry/entry.go

  • 一个Go语言程序示例

    本文档介绍来自《Go语言编程》的简单Go语言程序示例。 程序结构 本程序是一个排序算法的实现,程序结构如下所示 创...

  • GO——学习笔记(十):搭建简单的Web服务器

    上篇:GO——学习笔记(九) 下篇:GO——学习笔记(十一) 参考: https://github.com/ast...

  • GO——学习笔记(六)

    上篇:GO——学习笔记(五) 下篇:GO——学习笔记(七) 参考: https://github.com/asta...

网友评论

      本文标题:GO学习笔记——程序结构(1)

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