Go语言入门
本文章通过简单的Go语言代码说明一些Go语言编程的注意事项及知识点
需求
要求开发一个hello.go程序,可以在屏幕打印出“hello world”
开发步骤
在编写Go语言代码时的目录结构:
编写代码,代码如下:
//输出helloworld
package main
//go文件的后缀是.go
//package main表示hello.go所在包为main包
//在go中每个文件都必须归属于一个包
import "fmt"
//import “fmt”说明引入一个包,包名为fmt,引入目的是使用包内函数(fmt.Println())
func main() {
//func main() {
//func表示一个函数,main是主函数,代表程序的入口
fmt.Println("hello world")
//表示调用fmt的Println输出hello world字符串
}
- 在cmd中通过go build命令对go语言进行编译,生成exe文件,默认生成的exe文件与你的代码文件的名称相同,在Windows系统下是后缀为exe可执行文件,在Linux系统中直接生成可执行文件。执行结果如下图所示:
- 也可以通过go run 命令直接运行hello.go源代码(类似于执行一个脚本文件的形式),执行结果如下图所示:
Golang代码执行流程分析
- 如果是对源码编译后,再执行,Go的执行流程如下图:
- 如果我们直接对源码进行go run 指令,Go的执行流程如下图:
两种执行流程的方式区别
1. 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行。
2. 如果我们是直接go run我们写的源代码,那么如果想要在另一台电脑上也运行,那么那台电脑必须安装Go语言的运行环境,否则无法执行。
3. 在编译时,编译器会将程序运行依赖的库文件也包含在可执行文件中,所以可执行文件变大了很多。(go语言的helloworld代码只有5KB,生成的可执行文件有接近2000KB)
编译和运行说明
- 有了Go语言代码的源文件,可以通过编译器将其编译成机器可以识别的二进制码文件
- 在该源文件目录下,通过go build 对hello.go文件进行编译,可以指定生成的可执行文件名,在Windows下,必须是.exe的后缀。
- 如果程序没有错误,那么没有任何提示,并会在当前目录中生成一个可执行文件,该文件是一个二进制码文件,也是可以直接执行的程序。
- 如果程序有错误,编译时,会在错误的那一行报错。这有助于程序员的调试。
- 运行有两种形式
- 直接运行生成的可执行文件,比如hello.exe
- 通过运行工具go run 对源代码文件直接进行运行。
Go语言开发的注意事项
- Go语言源代码的扩展名为.go
- Go应用程序的执行入口是main()函数。(与java/c相同)
- Go语言严格区分大小写
- Go方法由一条条语句构成,每个语句后不需要分号(编译时会自动为每行后添加分号),这也体现了Go语言代码的简洁性。
- Go编译器都是一行一行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则会报错。
- Go语言定义的变量或者import的包如果没有被使用到,代码是无法编译通过的。
- 大括号必须成对出现!
Go语言的转义字符
常用的转义字符如下:
- \t:表示一个制表符,通常用于排版
- \n:换行符
- \:一个\
- \“:一个”
- \r:一个回车
案例代码:
package main
import "fmt" //fmt提供格式化,输入,输出的函数
func main() {
//演示转义字符的使用
// \t的使用
fmt.Println("tom\tjack")
// \n的使用
fmt.Println("tom\njack")
// \\的使用
fmt.Println("hello\\world")
// \"的使用
fmt.Println("qwq\"ovo")
// \r的使用
fmt.Println("owowo\rovo")
}
运行效果:
注:换行符是直接换行,而回车是指把光标移到头部,将原来字符串中的语句的头部替换为回车后的字符,就如同示例中的owowo中前半段的owo就被\r之后的ovo替换了,最后打印出了ovowo
课堂练习
要求使用一条输出语句,实现下图中的效果:
代码:
package main
import "fmt"
func main() {
fmt.Println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京")
}
注:学会查看编译器的报错,自己进行bug的排查
Go语言的注释
介绍注释
用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性;
注释是一个程序员必须要具有的良好的编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
Go语言中注释的两种形式
行注释
- 基本语法
//注释内容
- 举例
//输出helloworld package main //go文件的后缀是.go //package main表示hello.go所在包为main包 //在go中每个文件都必须归属于一个包 import "fmt" //import “fmt”说明引入一个包,包名为fmt,引入目的是使用包内函数(fmt.Println()) func main() { //func main() { //func表示一个函数,main是主函数,代表程序的入口 fmt.Println("hello world") //表示调用fmt的Println输出hello world字符串 }
块注释(多行注释)
- 基本语法
/* 注释内容 */
- 举例说明
/* 这 是 一个 多行注释 */
- 使用细节
- 对于行注释和块注释,被注释的文字,不会被Go编译器执行。
- 块注释里不允许有块注释嵌套。
规范的代码风格
正确的注释和注释风格
- Go官方推荐使用行注释来注释整个方法和语句
- 可以看Go源码中的注释的风格
正确的缩进和空白
- 在VSCode中,使用tab进行代码缩进,默认整体朝右边移动,使用shift+tab可以真git向左移动。
- 使用gofmt来进行代码的格式化,如图所示:
- 运算符两边习惯性各加一个空格,如:2 + 4 * 5
- Go语言代码风格辨析:
package main
import "fmt"
func main() {
fmt.Println("Hello,Go!")
}
//上面的写法是正确的
//下面的写法是错误的,Go语言不支持这种写法
package main
import "fmt"
func main()
{
fmt.Println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京")
}
Go语言设计者希望在一个问题上尽量只有一个解决方法
- 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。比如:
fmt.Println("HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHe\n",
"lloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWor\n",
"ldHelloWorldHelloWorldHelloWorld")
}
知识点总结/回顾
API/指南的链接
Golang简体中文官方编程指南地址
Golang中文网 在线标准库文档
Golang官方标准API文档地址
API:application program interface:应用程序编程接口,也就是我们GO各个包里的各个函数
Golang中调用函数的方式是import 包
,然后使用包名.函数名
进行函数的调用