Go语言入门

本文章通过简单的Go语言代码说明一些Go语言编程的注意事项及知识点

需求

要求开发一个hello.go程序,可以在屏幕打印出“hello world”

开发步骤

  1. 在编写Go语言代码时的目录结构:

  2. 编写代码,代码如下:

//输出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字符串
}
  1. 在cmd中通过go build命令对go语言进行编译,生成exe文件,默认生成的exe文件与你的代码文件的名称相同,在Windows系统下是后缀为exe可执行文件,在Linux系统中直接生成可执行文件。执行结果如下图所示:

  1. 也可以通过go run 命令直接运行hello.go源代码(类似于执行一个脚本文件的形式),执行结果如下图所示:

Golang代码执行流程分析

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

  • 如果我们直接对源码进行go run 指令,Go的执行流程如下图:

两种执行流程的方式区别

1. 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行。
2. 如果我们是直接go run我们写的源代码,那么如果想要在另一台电脑上也运行,那么那台电脑必须安装Go语言的运行环境,否则无法执行。
3. 在编译时,编译器会将程序运行依赖的库文件也包含在可执行文件中,所以可执行文件变大了很多。(go语言的helloworld代码只有5KB,生成的可执行文件有接近2000KB)

编译和运行说明

  1. 有了Go语言代码的源文件,可以通过编译器将其编译成机器可以识别的二进制码文件
  2. 在该源文件目录下,通过go build 对hello.go文件进行编译,可以指定生成的可执行文件名,在Windows下,必须是.exe的后缀。

  1. 如果程序没有错误,那么没有任何提示,并会在当前目录中生成一个可执行文件,该文件是一个二进制码文件,也是可以直接执行的程序。
  2. 如果程序有错误,编译时,会在错误的那一行报错。这有助于程序员的调试。

  1. 运行有两种形式
    • 直接运行生成的可执行文件,比如hello.exe
    • 通过运行工具go run 对源代码文件直接进行运行。

Go语言开发的注意事项

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

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语言中注释的两种形式

  1. 行注释

    • 基本语法
    //注释内容
    • 举例
    //输出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字符串
    }
  2. 块注释(多行注释)

    • 基本语法
    /*
    注释内容
    */
    • 举例说明
    /*
    这
    是
    一个
    多行注释
    */
  • 使用细节
    • 对于行注释和块注释,被注释的文字,不会被Go编译器执行。
    • 块注释里不允许有块注释嵌套。

规范的代码风格

正确的注释和注释风格

  1. Go官方推荐使用行注释来注释整个方法和语句
  2. 可以看Go源码中的注释的风格

正确的缩进和空白

  1. 在VSCode中,使用tab进行代码缩进,默认整体朝右边移动,使用shift+tab可以真git向左移动。
  2. 使用gofmt来进行代码的格式化,如图所示:

  1. 运算符两边习惯性各加一个空格,如:2 + 4 * 5
  2. 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语言设计者希望在一个问题上尽量只有一个解决方法

  1. 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。比如:
fmt.Println("HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHe\n",
	"lloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWor\n",
	"ldHelloWorldHelloWorldHelloWorld")
}

知识点总结/回顾


API/指南的链接

Golang简体中文官方编程指南地址

Golang中文网 在线标准库文档

Golang官方标准API文档地址

API:application program interface:应用程序编程接口,也就是我们GO各个包里的各个函数

Golang中调用函数的方式是import 包,然后使用包名.函数名 进行函数的调用