[GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

网友投稿 736 2022-05-29

这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时候觉得编程语言恰恰是最简单的,而通过一门编程语言能够解决实际问题或深入底层才是其价值所在,并且当我们学好一门编程语言后(尤其C和C++),其他编程语言都非常类似,殊途同归,学起来也很迅速。

源码-:

https://github.com/eastmountyxz/Go-learning

前文参考:

[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及

[GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

文章目录

一.Go语言执行流程和编译运行

1.回顾前文

2.执行流程

3.编译运行

二.语法要求及常见问题

1.语法注意事项

2.常见问题

三.Golang转义字符、注释及编程风格

1.转义字符

2.注释

3.编程风格

四.Golang编程指南

1.编程指南

2.官方API标准库

五.Dos常用指令

1.目录操作指令

2.文件操作指令

3.其它指令

六.Golang编程练习

1.题目

2.解答

七.总结

一.Go语言执行流程和编译运行

1.回顾前文

前面我们通过VSCode已经快速编写了第一个Go程序,具体步骤如下:

第一步,在Goproject文件夹中创建“src\go_code”目录,并创建第一个项目“project01”。

第二步,VSCode打开刚才创建的文件目录。

第三步,通过go_build命令对该go文件进行编译,生成.exe文件。

第四步,在DOS命令行下执行.exe文件,并查看运行效果。

第五步,通过go run命令可以直接运行test01.go程序。

其运行结果如下图所示:

核心代码如下:

package main //把test.go文件归属到main import "fmt" //引入包fmt func main() { //输出内容 fmt.Println("hello, My name is Eastmount!") }

代码解释:

Go程序的后缀是 .go

Go项目结构通常采用:GOPROJECT -> src -> go_code -> 项目名称

package main

:表示test01.go文件所在包是main,在go中,每个文件都必须归属于一个包

import “fmt”

:表示引入了一个包,包名为fmt,引入该包后就能使用其函数,比如fmt.Println

func main() {}

:这是一个关键字,后面对应是一个函数。main是主函数,即程序的入口

fmt.Println(“hello, My name is Eastmount!”)

:调用fmt包中函数输出内容

2.执行流程

如果是对源码编译后再执行,Go的执行流程如下图所示:

编译源代码:go build指令,生成可执行文件

运行可执行文件:输出程序的结果

如果是对源码直接执行,通过“go run”运行程序,Go的执行流程如下图所示:

go run将编译和运行一起执行

注意,在真实环境中是需要先编译后运行的。所以“go run”命令的运行时间更长,因为编译过程中隐藏在命令中,而上面的步骤是运行编译后的可执行文件。

“尚硅谷”韩顺平老师简单总结了两种执行流程的区别:

如果先编译生成了可执行文件,那么可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行;

如果我们直接运行“go run go源代码”,那么如果要在另外一个机器上运行,也需要go开发环境,否则无法执行;

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

3.编译运行

(1) 什么是编译呢?

编译(compilation , compile) 指利用编译程序从源语言编写的源程序产生目标程序的过程,Go程序的编译就是把高级语言(源码)变成计算机可以识别的二进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成二进制的。

当有了Go源文件后,通过编译器将其编译成机器可以识别的二进制文件,如下图所示,在该源文件目录下,通过“go build”对test01.go文件进行编译。

注意,“go build”编译可以指定生成的可执行文件名,但在Windows下必须是“.exe”后缀。下面简单演示下。

go build -o eastmount.exe test01.go

Goproject\src\go_code\project01\main

运行结果如下图所示:

eastmount.exe

hello, My name is Eastmount!

小技巧:在CMD中如何快速进入指定目录

打开源文件所在目录,在路径栏输入cmd+回车,即可快速进入CMD。

显示结果如下图所示:

另一种方法是在该目录下按住“Shift+鼠标右键”,点击“在此处打开PowerShell”即可。

(2) 错误提升

如果程序没有错误,没有任何提示,会在当前目录下出现一个可执行文件(Windows下是.exe文件,Linux下是一个可执行文件),该文件是二进制文件,也是可以执行的文件。如果程序有错误,编译时会在错误的那行提示,这有助于程序员调试代码。

(3) 什么是运行

运行有两种形式:

直接运行生成的可执行Go程序,比如test01.exe

通过运行工具go run对源代码文件进行运行

二.语法要求及常见问题

1.语法注意事项

Go源文件以“go”为扩展名

Go应用程序的执行入口是

main()函数

,这个和其他编程语言一样(如c、java)

Go语言严格区分大小写

Go方法由一条条语句构成,

每个语句后不需要分号

,Go语言会在每行后自动加分号,这也体现了Golang的简洁性,和Python一样

Go编译器是一行行进行编译的,因此我们一行写一条语句,不能把多条语句写在同一行,否则会报错

Go语言定义的变量或者import的包如果没有用到,代码不能编译通过

大括号都是成对出现的,缺一不可

2.常见问题

(1) 如何修改字体大小?

如果我们想在VSCode中修改Go程序字体大小,则需要在设置中修改代码选项。

性能->设置->字符大小。

(2) 系统找不到指定文件。

解决方法:源文件名不存在或错误,或者路径写错误。

(3) 每次编译和运行都需要在CMD中执行吗?

作为Go初学者,我建议大家先结合CMD来执行程序,这既能了解程序的基本执行流程;又能了解CMD的常用操作,如果你是想用GO做安全或后台,这些都是非常基础的命令。当然,随着这些列文章深入,后面会分享更好的集成开发工具,那些工具中可以直接执行程序,这也是为什么Python我首先推荐大家使用官网的IDLE。

(4) 编程语法错误。

作为初学者,在编程过程中最容易犯的错误就是语法错误,GO要求必须按照语法规则编写代码。如果你的程序违反了语法规则,如忘记大括号、引号、拼写错误、变量定义未使用等,Go编译器都会提示相应的语法错误,记住:

尝试看懂编译器报告的语法错误

学会独立去谷歌或百度错误,解决错误

这些独立解决问题的能力更为重要,无论以后做项目、工作或科研,都将终身受益

如下图所示,在第6行没有定义“fmt.Printin”,这就是一个语法错误,正确的应该是“fmt.Println”。

三.Golang转义字符、注释及编程风格

1.转义字符

Go语言常用的转义字符(escape char)如下:

\t:表示一个制表符,通常使用它来排版

\n:表示换行符

\:表示一个\

\":表示一个"

\r:表示一个回车,比如 fmt.Println(“Eastmount\rCSDN”)

具体实例如下所示,新建文件夹“chapter02”和“escaptechar”,接着新建“main.go”文件,并添加如下代码:

接着我们在CMD中去到指定目录,编译运行程序输出如下图所示效果:

cd chapter02\escaptechar

go run main.go

完整代码如下:

package main import "fmt" //引入包fmt 提供格式化、输出、输入函数 func main() { //转义字符 fmt.Println("Eastmount\tCSDN\tyangxiuzhang") fmt.Println("Hello\nWorld!!!") fmt.Println("C:\Users\xiuzhang\Desktop\data") fmt.Println("秀璋说\"我爱娜娜\"") //注意:回车会替换前面的内容 fmt.Println("秀璋爱娜娜\r珞珞") fmt.Println("\a") }

输出结果如下所示:

其他转义字符如下所示:

\a 响铃符 (相当于 \x07) \b 退格键(BS) (相当于 \x08) \f 换页符 (相当于 \x0C) \t 横向制表符 (相当于 \x09) \n 换行符 (相当于 \x0A) \r 回车符 (相当于 \x0D) \v 纵向制表符 (相当于 \x0B) 3 匹配 8 進制编码所代表的字符(必须是 3 位数字) \x7F 匹配 16 進制编码所代表的字符(必须是 3 位数字) \x{10FFFF} 匹配 16 進制编码所代表的字符(最大值 10FFFF ) \ 匹配字符 \ \" 匹配字符 "

2.注释

注释(Comment)用于解释程序的文字,注释提高了代码的阅读性。一个程序员一定要养成良好的编程习惯,注释就是将自己的思想整理出来,再用代码去实现。注释的好处及应用场景如下:

当你过段时间发现程序有问题或者调整功能时

当你去修改别人的代码或工作交接给别人时

当需要补充设计文档时

大型团队开发项目,各个成员相互合作通过注释和接口进行协调

即使是Go语言的源代码,也包括了丰富的注释,所以养成良好的注释习惯真的很重要,尤其是初学者。通常三行代码一行注释,根据个人习惯而定。

Go语言支持C语言风格的 /* */ 块注释,也支持C++风格的 // 行注释。行注释更通用,块注释主要用于针对包的详细说明、函数功能说明或屏蔽大块的代码。

Golang两种注释如下:

行注释

基本语法: // 注释内容

块注释

基本语法:

/*

注释内容

*/

注释的使用细节:

对于行注释和块注释,被注释的文字不会被Go编译器执行

块注释里不允许有块注释嵌套

VSCode选中代码 Ctrl+斜杠(/)会自动生成行注释,再按一次注销,IDEA通用

3.编程风格

(1) 正确的注释和注释风格

Go官方推荐使用行注释来注释方法和语句

多学习官方标准包注释

(2) 正确的缩进和空白

使用一次tab操作实现缩进,默认整体向右移动,恢复使用shift+tab向左移动

使用gofmt来进行格式化

运算符两边习惯个增加一个空格,比如:2 + 3 * 5

使用gofmt后自动对齐,如下图所示:

gofmt -w test02_02.go

(3) Go语言的代码风格

正确的代码风格:

package main import "fmt" //引入包fmt 提供格式化、输出、输入函数 func main() { //行注释:转义字符 fmt.Println("Eastmount\tCSDN\tyangxiuzhang") }

错误的代码风格:

Go语言设计者认为这会导致两种标准,他们的思想是一个问题尽量只有一个解决方法。Go规定如此,大家需要按规则编写代码。

package main import "fmt" //引入包fmt 提供格式化、输出、输入函数 func main() { //行注释:转义字符 fmt.Println("Eastmount\tCSDN\tyangxiuzhang") }

(4) 一行代码最长不超过80个字符,超过请使用换行展示,尽量保持格式优雅。

四.Golang编程指南

Golang 官方网站如下,记住官方文档和源码永远是最好的学习场所。

https://golang.org

当我们点击“Run”按钮即可运行程序,我们可以通过官网进行简单的代码学习。

点击“Tour”可进入编程指南,点击“packages”可查看官方标准包说明文档。

1.编程指南

点击“Tour”编程指南显示如下图所示:

https://tour.golang.org/welcome/1

下列代码输出结果如下:

package main import "fmt" func main() { fmt.Println("Hello, eastmount") fmt.Println("CSDN") var num = 1 + 2 fmt.Println("num=", num) }

那么,官方文档怎么使用呢?

我们点击“简体中文”,然后看到如下图所示的Go指南。

比如我们想了解“包”的基本概念,可以点击显示如下图所示,并且有对应的示例代码。

package main import ( "fmt" "math/rand" ) func main() { fmt.Println("My favorite number is", rand.Intn(10)) }

虽然这个手册对我们编程有帮助,但是其解释过于简单,对零基础的同学不太友好。但也建议大家去了解学习。

2.官方API标准库

Go语言是通过包(packages)的形式来管理它的函数的,点击“packages”可查看官方标准包说明文档。

比如我们想了解import "fmt"中对应的函数及功能。我们直接在网站中查询“fmt”,点击“index”显示如下图所示:

我们想查看函数Println原型和案例,显示如下图所示:

func Println(a …interface{}) (n int, err error)

package main import ( "fmt" ) func main() { const name, age = "Kim", 22 fmt.Println(name, "is", age, "years old.") // It is conventional not to worry about any // error returned by Println. }

输出结果为:

Go标准库API文档

API(Application Programming Interface,应用程序编程接口)是Golang 提供的基本编程接口;

Go提供了大量的标准库

Go中文网在线标准库文档:https://studygolang.com/pkgdoc

比如搜索“fmt”,解释为“fmt包实现了格式化I/O函数,类似于C的printf和scanf”。

Go的包和源文件及函数的关系简图如下所示:

调用函数:import 包名

使用函数:包名.函数名

Go安装src目录包含对应源码

五.Dos常用指令

DOS常用指令这里仅简单介绍,这是为了让大家更好地了解Windows基础操作,同时对Linux、MacOS和安全领域的命令操作也有帮助。当然,后续也会详细介绍在工具中编译运行GO程序的方法。

DOS:Disk Operating System,磁盘操作系统,即Windows目录结构

1.目录操作指令

常见命令如下:

dir:查看当前目录

[GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

cd 盘符:切换到其他盘符

cd …:切换到上一级目录

cd \:切换到根目录

md(make directory):新建目录

新建多个目录:md test01 test02

rd:删除目录

带询问删除目录及下面的子目录和文件:rd /s test02

2.文件操作指令

新建一个空文件:type nul>eastmount.txt

新建或追加内容到文件:echo hello > eastmount.txt

显示文件内容:type eastmount.txt

复制文件并重新文件名:copy eastmount.txt d:\yxz.txt

移动文件:move d:\yxz.txt c:\

删除指定文件:del d:\yxz.txt

删除指定目录中txt结尾所有文件:del *.txt

3.其它指令

清屏:cls

退出dos:exit

六.Golang编程练习

1.题目

(1) 编写程序输出自己的名字,熟悉GO语言

(2) 请使用一行代码输出如下内容

(3) 编写程序实现2和3的加减乘除运算并输出结果

(4) 编写程序获取当前时间分别输出年、月、日

(5) 编写程序计算1+2+…+100,并输出结果

(6) 编写程序输出如下图所示倒三角

2.解答

(1) 编写程序输出自己的名字,熟悉GO语言

package main import "fmt" func main() { fmt.Println("Hi, My name is Eastmount!") }

(2) 请使用一行代码输出如下内容

package main import "fmt" //引入包fmt 提供格式化、输出、输入函数 func main() { fmt.Println("姓名\t年龄\t籍贯\t行业\nyxz\t28\t贵州\t程序员") }

(3) 编写程序实现2和3的加减乘除运算并输出结果

package main import "fmt" //引入包fmt 提供格式化、输出、输入函数 func main() { var a = 2 var b = 3 fmt.Println("a + b = ", a + b) fmt.Println("a - b = ", a - b) fmt.Println("a * b = ", a * b) fmt.Println("a / b = ", a / b) }

(4) 编写程序获取当前时间分别输出年、月、日

package main import ( "fmt" "time" ) func main() { //获取当前日期 today := time.Now() fmt.Println("当前日期为:", today) //分别获取年月日 year := today.Year() month := today.Month() day := today.Day() fmt.Println("年:", year) fmt.Println("月:", month) fmt.Println("日:", day) fmt.Printf("%d-%02d-%02d", year, month, day) }

补充知识:= 是赋值, := 是声明变量并赋值

// = 使用必须使用先var声明 var a a=100 var b = 100 var c int = 100 // := 是声明并赋值,并且系统自动推断类型,不需要var关键字 d := 100

(5) 编写程序计算1+2+…+100,并输出结果

package main import "fmt" func main() { var result = 0 for i := 0; i <= 100; i++ { result += i } fmt.Println("1+2+...+100=", result) }

(6) 编写程序输出如下图所示倒三角

package main import "fmt" func main() { var len = 5 for i := 0; i < len; i++ { for j := len - i; j > 0; j-- { fmt.Print("*") } fmt.Print("\n") } }

七.总结

写到这里,这篇基础性Golang文章介绍完毕,希望您喜欢!

一.Go语言执行流程和编译运行

1.回顾前文

2.执行流程

3.编译运行

二.语法要求及常见问题

1.语法注意事项

2.常见问题

三.Golang转义字符、注释及编程风格

1.转义字符

2.注释

3.编程风格

四.Golang编程指南

1.编程指南

2.官方API标准库

五.Dos常用指令

1.目录操作指令

2.文件操作指令

3.其它指令

六.Golang编程练习

1.题目

2.解答

编程习惯和Go基本概念了解后,后面的文章将详细介绍Go语言的基础语法知识,并结合案例进行普及。希望这篇基础性文章对您有帮助,写得不好的地方还请海涵。同时非常感谢参考文献中的大佬们的文章分享,深知自己很菜,得努力前行。也希望自己能深入下去,未来四年好好研究Go编程语言,做更多实际工程,写更好的文章,共勉!

原文地址:

https://blog.csdn.net/Eastmount/article/details/113151363

源代码-:

https://github.com/eastmountyxz/Go-learning

(By:娜璋AI之家 Eastmount 2021-06-16 星期三 夜于武汉 https://blog.csdn.net/Eastmount)

参考文献:

Go官网:https://golang.org/

韩老师视频:https://www.bilibili.com/video/BV1pt41127FZ

https://www.runoob.com/go/go-tutorial.html

Go中文网在线标准库文档:https://studygolang.com/pkgdoc

API Go HTTP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:快速入门RDS【玩转华为云】
下一篇:【云驻共创】聚焦“Z世代”,洞见未来消费新生态
相关文章