- Go 入门指南: Go 程序的基本结构和要素
Go 程序的基本结构和要素
包的概念,导入和可见性
包是结构化代码的一种方式: 每个程序都由包(通常简称为 pkg) 的概念组成,可以使用自身的包或者从其他包中导入内容。
如同其他一些编程语言中的类库或命名空间的概念,每个 go 文件都属于且仅属于一个包。一个包可以由许多以 .go
为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。
生如蝼蚁当立鸿鹄之志, 命如薄纸应有不屈之心!
包是结构化代码的一种方式: 每个程序都由包(通常简称为 pkg) 的概念组成,可以使用自身的包或者从其他包中导入内容。
如同其他一些编程语言中的类库或命名空间的概念,每个 go 文件都属于且仅属于一个包。一个包可以由许多以 .go
为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。
一个字符串是一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时占用一个字节,其它字符根据需要占用 2-4 个字节)
more >>类型别名是 Go 1.9 版本添加的新功能,主要用于解决代码升级,迁移过程中存在的类型兼容性问题。在 C/C++
语言中,代码重构升级可以使用宏快速定义一段新的代码,Go 语言中没有选择加入宏,而是解决了重构中最麻烦的类型名变更问题。
在 go 1.9 版本之前定义内建类型的代码是这样写的:
1 | type byte uint8 |
在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string、int、int64、float 等数据类型之间的转换,Go 语言中的 strconv
包为我们提供了字符串和基本数据类型之间的转换功能。
字符串和整数之间的转换使我们平时编程中使用的最多的,下面就来介绍一下具体的操作
more >>golang 的数值类型分为以下几种:整数、浮点数、复数,其中每一种都包含了不同大小的数值类型,例如有符号整数包含 int8、int16、int32、int64 等,每种数值类型都决定了对应的大小范围和是否支持正负符号。
more >>go 语言中的常量使用关键字 const
定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型,数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。
常量的定义格式和变量的声明语法类似,例如:
1 | const name [type] = value |
在讨论变量生命周期之前,先来了解下计算机组成里两个非常重要的概念:堆和栈。
栈(Stack)是一种拥有特殊规则的线性表数据结构。
more >>Go 语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是 兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性。
Go 语言有时候被描述为 C 类似语言,或者是 21 世纪的C语言。
Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。
因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。
Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说 Go 语言是一门混合型的语言。
Go 语言的词法元素包括 5 种,分别是标识符(identifier)、关键字(keyword)、操作符(operator)、分隔符(delimiter)、字面量(literal),它们是组成 Go 语言代码和程序的最基本单位。
关键字即是被Go语言赋予了特殊含义的单词,也可以称为保留字。go 语言中的关键字一共有 25 个:
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true