美文网首页@IT·互联网golang学习笔记Go
golang学习笔记2:基本结构与数据类型

golang学习笔记2:基本结构与数据类型

作者: 编程老司机 | 来源:发表于2018-10-11 22:35 被阅读57次

下面列举了 Go 代码中会使用到的 25 个关键字或保留字:

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数。

程序一般由关键字、常量、变量、运算符、类型和函数组成。

程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。

程序中可能会使用到这些标点符号:. ,  ; : 和 …

程序的代码通过语句来实现结构化。每个语句不需要像 C 家族中的其它语言一样以分号;结尾,因为这些工作都将由 Go 编译器自动完成。

如果你打算将多个语句写在同一行,它们则必须使用;人为区分,但在实际开发中我们并不鼓励这种做法。

如果对一个包进行更改或重新编译,所有引用了这个包的客户端程序都必须全部重新编译。

Go 中的包模型采用了显式依赖关系的机制来达到快速编译的目的,编译器会从后缀名为.go 的对象文件(需要且只需要这个文件)中提取传递依赖类型的信息。

如果 A.go 依赖 B.go,而 B.go 又依赖 C.go:

编译 C.go, B.go, 然后是 A.go.

为了编译 A.go, 编译器读取的是 B.go 而不是 C.go.

这种机制对于编译大型的项目时可以显著地提升编译速度。

每一段代码只会被编译一次

一个 Go 程序是通过 import 关键字将一组包链接在一起。

import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。包名被封闭在半角双引号 "" 中。如果你打算从已编译的包中导入并加载公开声明的方法,不需要插入已编译包的源代码。

函数

这是定义一个函数最简单的格式:

func functionName()

在程序开始执行并完成初始化后,第一个调用(程序的入口点)的函数是 main.main()(如:C 语言),该函数一旦返回就表示程序已成功执行并立即退出。

函数里的代码(函数体)使用大括号 {} 括起来。

Go 语言虽然看起来不使用分号作为语句的结束,但实际上这一过程是由编译器自动完成.

类型

可以包含数据的变量(或常量),可以使用不同的数据类型或类型来保存数据。使用 var 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合。

类型可以是基本类型,如:int、float、bool、string;结构化的(复合的),如:struct、array、slice、map、channel;只描述类型的行为的,如:interface。

结构化的类型没有真正的值,它使用 nil 作为默认值(在 Objective-C 中是 nil,在 Java 中是 null,在 C 和 C++ 中是NULL或 0)。值得注意的是,Go 语言中不存在类型继承。

Go 程序的一般结构

下面的程序可以被顺利编译但什么都做不了,不过这很好地展示了一个 Go 程序的首选结构。这种结构并没有被强制要求,编译器也不关心 main 函数在前还是变量的声明在前,但使用统一的结构能够在从上至下阅读 Go 代码时有更好的体验。

总体思路如下:

  • 在完成包的 import 之后,开始对常量、变量和类型的定义或声明。

  • 如果存在 init 函数的话,则对该函数进行定义(这是一个特殊的函数,每个含有该函数的包都会首先执行这个函数)。

  • 如果当前包是 main 包,则定义 main 函数。

  • 然后定义其余的函数,首先是类型的方法,接着是按照 main 函数中先后调用的顺序来定义相关函数,如果有很多函数,则可以按照字母顺序来进行排序。

Go 程序的执行(程序启动)顺序如下:

按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程:

如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。

然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。

在完成这一切之后,main 也执行同样的过程,最后调用 main 函数开始执行程序。 

关注置顶走一波~

相关文章

  • golang学习笔记2:基本结构与数据类型

    下面列举了 Go 代码中会使用到的 25 个关键字或保留字: 除了以上介绍的这些关键字,Go 语言还有 36 个预...

  • Golang学习之基本数据类型

    如上图所示,Golang中的数据类型分为基本数据类型与复杂数据类型(派生数据类型),这一章重点介绍Golang中的...

  • Typescript 学习笔记

    TypeScript 学习笔记 一、基本数据类型 基本数据类型与 JavaScript 一致,包含了 number...

  • Go的基础知识

    go语言学习笔记 一. 基本结构,基本数据类型 1. 文件名、关键字与标识符 Go 的源文件以 .go 为后缀名存...

  • Golang菜鸟教程-学习笔记-Day2

    Golang菜鸟教程-学习笔记-Day2 大纲 常量 常量 常量在运行时,不会被修改 常量中的数据类型可以是布尔型...

  • Redis-01数据类型之string类型与list类型

    1,string数据类型与结构 2,string数据类型应用场景 3,list数据类型与结构 4,list数据类型...

  • golang巧用fmt判断相等

    golang的==只能用于基本数据类型, 要想判断切片或者结构体, 很多人会用长串的and进行判断, 但是这样不仅...

  • Golang学习笔记之方法(method)

    如果对与结构体还有什么疑问的可以看一下Golang学习笔记之结构体 ⽅法总是绑定对象实例,并隐式将实例作为第⼀实参...

  • Golang:基本的数据类型

    golang中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、c...

  • Java语言基础

    Java主类结构基本数据类型变量与常量运算符数据类型转换

网友评论

    本文标题:golang学习笔记2:基本结构与数据类型

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