Frank's blog Frank's blog
首页
  • Java SE
  • Java Web
  • Java EE
  • HTML
  • CSS
技术
Python
  • 友情链接
关于
索引
GitHub (opens new window)

Master Frank

斯人若彩虹,遇上方知有
首页
  • Java SE
  • Java Web
  • Java EE
  • HTML
  • CSS
技术
Python
  • 友情链接
关于
索引
GitHub (opens new window)
  • 软件设计师

  • 软件推荐

  • Go语言

    • Go语言概述
      • 1. Go语言概述
        • 1.1 Golang的功能特点
        • 1.2 Golang的应用领域
        • 1.3 Golang 的开发工具
      • 2. Go 语言环境安装
      • 3. 第一个 Go 程序
        • 3.1 Hello Go
        • 3.2 代码分析
        • 3.3 命令行运行程序
      • 4. Go 程序开发的注意事项
      • 5. Go 语言常用的转义字符(escape char)
        • 5.1 转义字符
        • 5.2 示例
        • 5.3 练习
      • 6. 规范的代码风格
      • 7. Go 语言官方编程指南
      • 8. Go 语言标准库API文档
    • Go语言基础类型
  • 友情链接
  • 更多
  • Go语言
Frank
2022-04-16
目录

Go语言概述

# Go语言基础语法

# 1. Go语言概述

Go语言,我们可以简单地写成Golang。

Go语言是谷歌2009年发布的第二款开源编程语言,它专门针对多处理器系统应用程序的编程进行了优化,它是一种系统语言其非常有用和强大,其程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

Go语言之父:

  • Thompson:1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。

  • Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8 字元编码。

  • Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。

img

Go语言的吉祥物,金花鼠gordon

# 1.1 Golang的功能特点

  • Go语言保证了既能达到静态语言的安全和性能,又达到了动态语言开发维护的高效率

  • Go语言设计是让软件充分发挥多核心处理器同步多工的优点,语言层面天生支持并发,可解决面向对象程序设计面临的麻烦。

  • Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。

  • Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。

  • Go语言可以在不损失应用程序性能的情况下降低代码的复杂性。

  • Go语言的另一项与网络相关的特色,是服务器和用户端设备,如PC或手机,可以分担工作。因此,使用Go的服务便可轻松适应不同的用户端处理性能。

  • Go可以和Native Client配合使用,Go可以让应用完美的运行在浏览器内。例如,使用Go可以更高效的实现Wave,无论是在前端还是后台。

  • 函数可以返回多个值

# 1.2 Golang的应用领域

# 1.2.1 区块链的应用开发

区块链技术,简称BT(Blockchain technology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。

# 1.2.2 后台的服务应用

  • 美团后台流量支撑程序

    应用范围:支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能

  • 仙侠道

    应用范围:游戏服务器(通讯、逻辑、数据存储)

# 1.2.3 云计算/云服务后台应用

  • 盛大云CDN(内容分发网络)

    应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等

  • 京东消息推送云服务/京东分布式文件系统

    应用范围:后台所有服务全部用go实现

# 1.3 Golang 的开发工具

  • VS code:默认提供go语言的高亮,安装go语言插件后还可以支持智能提示,编译运行等功能
  • LiteIDE:一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由QT编写。
  • Sublime Text:Sublime Text 3(以下简称Sublime)+ GoSublime + gocode + MarGo的组合。
  • Vim:Vim是从vi发展出来的一个文本编辑器,享有“编辑器之神”的称号。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
  • Emacs:Emacs是由GNU开源组织开发出来的一个文本编辑器,同时更是一个整合环境,曾被人戏称“一个伪装成编辑器的操作系统”。
  • Eclipse:Eclipse也是非常常用的开发利器,可以使用Eclipse来编写Go程序。
  • IntelliJ IDEA:熟悉Java的读者应该对于idea不陌生,idea是通过一个插件来支持go语言的高亮语法,代码提示和重构实现

# 2. Go 语言环境安装

# 2.1 Go 语言 SDK 安装

Go 语言支持以下系统:

  • Linux
  • FreeBSD
  • Mac OS X(也称为 Darwin)
  • Window

安装包下载地址为:https://golang.google.cn/dl/

直接傻瓜式安装

# 2.2 验证是否安装成功

在Windows中安装会自动配置环境变量

打开cmd,输入go version,当能看到返回的go语言版本即安装成功

image-20220417122302669

# 2.3 Go 标准命令概述

Go语言中包含了大量用于处理Go语言代码的命令和工具。其中,go命令就是最常用的一个,它有许多子命令。这些子命令都拥有不同的功能,如下所示。

  • build:用于编译给定的代码包或Go语言源码文件及其依赖包。
  • clean:用于清除执行其他go命令后遗留的目录和文件。
  • doc:用于执行godoc命令以打印指定代码包。
  • env:用于打印Go语言环境信息。
  • fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。
  • fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。
  • get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。
  • list:用于显示给定代码包的信息。
  • run:用于编译并运行给定的命令源码文件。
  • install:编译包文件并编译整个程序。
  • test:用于测试给定的代码包。
  • tool:用于运行Go语言的特殊工具。
  • version:用于显示当前安装的Go语言的版本信息。

# 2.4 Go 语言SDK的目录结构

image-20220417170427583

# 3. 第一个 Go 程序

# 3.1 Hello Go

// hello.go
package main
import "fmt"

func main() {
	fmt.Println("Hello Go!")
}
1
2
3
4
5
6
7

# 3.2 代码分析

  • 每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。

  • 要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。

  • Go语言的main()函数不能带参数,也不能定义返回值。

  • 在包声明之后,是一系列的import语句,用于导入该程序所依赖的包。由于本示例程序用到了Println()函数,所以需要导入该函数所属的fmt包。

  • 所有Go函数以关键字func开头。一个常规的函数定义包含以下部分:

    func 函数名(参数列表)(返回值列表) {
        // 函数体
    }
    
    1
    2
    3
  • Go程序的代码注释与C++保持一致,即同时支持以下两种用法:

    /* 块注释 */
    // 行注释
    
    1
    2
  • Go程序并不要求开发者在每个语句后面加上分号表示语句结束,这是与C和C++的一个明显不同之处。

  • **注意:**强制左花括号 { 的放置位置,如果把左花括号 { 另起一行放置,这样做的结果是Go编译器报告编译错误。

# 3.3 命令行运行程序

新建hello.go程序,在对应路径打开cmd

# 3.3.1 先编译后执行

输入go build hello.go编译,再输入hello.exe运行

# 3.3.2 直接执行

输入go run hello.go直接编译运行

image-20220418124225771

# 3.3.3 两种执行方式的区别

  • 如果先编译生成可执行文件,该可执行文件可以在没有go开发环境的机器上运行

  • 如果直接编译运行,那么如果要在另外一个机器上运行,也需要go开发环境

  • 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以可执行文件会变大很多

    image-20220419142227655

  • 通过 go build 对 go 文件进行编译,可以指定生成的可执行文件名

    image-20220419153807520

  • 如果程序有错误,编译时会在错误的那行报错,有助于程序员调试错误。

# 4. Go 程序开发的注意事项

  1. Go 源文件以“go”为拓展名
  2. Go 应用程序的执行入口是main()函数
  3. Go 语言严格区分大小写
  4. Go 方法由一条条语句构成,每个语句后不需要分号(Go 语言会在每行后自动加分号),这也体现了Golang的简洁性
  5. Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一行,否则报错
  6. Go 语言定义的变量或者导入的包如果没有使用到,代码编译不能通过
  7. 大括号都是成对出现的,缺一不可

# 5. Go 语言常用的转义字符(escape char)

# 5.1 转义字符

转义字符 含义
\t 一个制表位,实现对齐的功能
\n 换行符
\\ 一个\
\" 一个"
\r 一个回车,后面的内容从当前行的最前面开始输出,覆盖前面的内容

# 5.2 示例

package main

import "fmt" // fmt包中提供格式化,输入,输出的函数

// 转义字符的使用
func main() {
	// \t 制表符
	fmt.Println("tom\tjack")
	// \n 换行符
	fmt.Println("hello\nworld")
	// \\ 一个\
	fmt.Println("C:\\Users\\Administrator\\Desktop\\Go语言核心编程课程\\资料")
	// \" 一个"
	fmt.Println("tom说\"i love you\"")
	// \r 回车,后面的内容从当前行的最前面开始输出,覆盖掉前面的内容
	fmt.Println("天龙八部雪山飞狐\r张飞")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

image-20220502151258892

# 5.3 练习

要求:请使用一句输出语句,达到输入如下图形的效果:

image-20220420222745784

代码:

package main
import "fmt" 
 
// 这是一个main函数,是程序入口
func main() {
   // 要求:请使用一句输出语句,达到输入如下图形的效果:
   // 姓名	年龄  籍贯	 住址
   // john	12	  河北	 北京
   fmt.Println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京")
}
1
2
3
4
5
6
7
8
9
10

# 6. 规范的代码风格

  1. Go 官方推荐使用行注释来注释整个方法和语句

  2. 使用正确的缩进

    可以使用gofmt 文件名进行格式化,使用gofmt -w 文件名将格式化后的内容写入文件。

    image-20220502231653873

  3. 运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

  4. Go 语言的代码风格,例如左大括号 { 的位置不能另起一行,否则会报错。

    image-20220502232418328

  5. 一行最长不超过 80 个字符,超过的请使用换行展示,尽量保持格式优雅

# 7. Go 语言官方编程指南

中文版 Go 语言官方编程指南 (opens new window)

里面可以切换语言

# 8. Go 语言标准库API文档

API:application program interface:应用程序编程接口。

Go 语言标准库API文档 (opens new window)

image-20220502234030398

在Github中编辑 (opens new window)
上次更新: 2022/05/02, 23:41:29
bilibili视频下载器
Go语言基础类型

← bilibili视频下载器 Go语言基础类型→

最近更新
01
面试问题套路
04-21
02
Mysql多版本安装
05-28
03
Go语言基础类型
05-04
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Master Frank | 粤ICP备2021148573号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×