Go入门介绍(Chapter Two)-保姆级教学

Go入门介绍(Chapter Two)

Go语言快速入门


  1. 需求
  • 需求开发一个hello.go程序,可以输出“hello,world”
  1. 开发的步骤
  • 开发这个程序时,我们的目录结构是什么样子的

      goprogect
      	 |
      	   src
      	      |
      	       go_code
      		     |
      		      project01
      			      |
      			      ---main
      			      ---package
    
  1. 第一个程序hello.go
package main
import "fmt"
func main(){
fmt.Println("hello,world!")
}

Golang执行流程分析


  1. 如果对源码编译后,再执行,Go的执行流程如下
go build
运行
.go文件
编译成可执行文件
结果
  1. 如果我们对源码直接执行go run源码,Go的执行流程如下
go run
.go文件
结果
  1. Golang执行流程分析
  • 如果我们先编译生成可执行文件,那么我们可以将该可执行文件拷贝到没有Go开发环境的机器上,仍然可以运行
  • 如果我们直接go run go源代码,那么如果要在另一个机器上这么运行,也需要go开发环境,否则无法执行。
  • 在编译时候,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变化了很多

Golang编译和运行说明


编译

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

  • 在这里插入图片描述

  • 这里面我们可以利用go help build来获取build的帮助信息,其中我们可以利用-o参数来指定输出的文件格式(windows下必须加.exe后缀)

  • 在这里插入图片描述

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

运行

  1. 直接运行生成的可执行Go程序,比如hello.exe
  2. 可以实现利用gofmt -w 文件名.go对文件进行格式化
  3. 通过运行工具go run对源代码文件进行运行

Go程序开发的注意事项


  1. Go源文件以"go"为扩展名

  2. Go应用程序的执行入口是main()方法

  3. Go语言严格区分大小写

  4. Go方法由一条条语句构成,每个语句后面不需要分号(Go语言会在每行后面自动加分号),这也体现出Golang的简洁性

  5. Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错
    在这里插入图片描述

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

  • 定义一个变量,如果没有使用这个变量,就会编译通不过
    在这里插入图片描述
  1. 大括号都是成对出现的,缺一不可

Go语言中的转义字符(escape char)

  1. 5个常用的转义字符
  • \t
    一个制表位,实现对齐的功能
  • \n
    换行符
  • \\
    一个\
  • \"
    一个"
  • \r
    一个回车
  1. 案例
package main
import "fmt"
func main() {
	//演示转义字符的使用 \t
	fmt.Println("透明\t透明")
	//换行符的演示 \n
	fmt.Println("hello\ntom")
	//引用路径,需要使用\转义“\”
	fmt.Println("D:\\Golearn\\demo")
	fmt.Println("tom说\"我爱你\"")
	// \r 回车,从当前行的最前面开始输出,
	//覆盖掉以前的内容
	fmt.Println("我爱你\r亲爱的")
}

注意

  • 如果我们在练习的时候出现在同一个文件夹下两个文件引用了两次func main(),会出现错误,因为,一个包下面不能重复,所以,我们可以重现创建一个文件夹,将文件放进去

Golang开发常见错误和解决方法


  1. 找不到文件
  • 源文件名不存在,或者写错,或者当前路径错误
    在这里插入图片描述
  1. 小提示
  • 学习编程最容易犯的错是语法错误。Go要求你必须按照语法规则编写代码,如果你的程序违反了语法规则,例如:忘记了大括号、引号、或者拼错了单词,go编译器都汇报语法错误,
    要求:尝试去看懂编译器会报告的错误信息

注释(Comment)


介绍
  1. 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性
  2. 注释是一个程序员必须都具有的良好的编程习惯,将自己的思想通过注释先整理出来,再用代码去体现
Go语言中的注释类型
  1. Go支持C语言风格的/**/块注释,也支持C++风格的//行注释。行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码
  2. 注释快捷键
  • 行注释:ctrl+/
    第一次表示注释
    第二次表示取消注释
  • 块注释:crtl+shift+/
    第一次表示注释
    第二次表示取消注释
    块注释中不能再有块注释

Go规范的代码风格

正确的注释和注释风格
  1. Go官方推荐使用行注释来注释整个方法和语句
  2. 看go的源码,go/src/下的文件
正确的缩进和空白
  1. 使用一次Tab操作,实现缩进,默认整体向右移动,有时候用shift+tab整体向左移
  2. 或者使用gofmt来进行格式化
  3. 运算符两边习惯各加一个空格
  • 比如:2 + 4 * 5
  1. 行长约定
  • 行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅
  1. 代码风格-Go设计者:一个问题尽量只有一个解决方案
  • 正确的
package main
import "fmt"
func main(){
	fmt.Println("hello,world")
}
  • 错误的
package main
import "fmt"
func main()
{
	fmt.Println("hello,world")
}

Golang官方编程指南


Golang官方网站

在这里插入图片描述|点击tour可以进入沙箱操作,并学习go的语法知识

Golang官方标准库API文档

在这里插入图片描述

|可以查看golang所有包下的函数和使用
在这里插入图片描述

|Golang中文网在线标准库文档


标准命令简述

  • build
    • 用于编译指定的代码或者Go语言源码文件。命令源码文件会被编译成可执行文件,并存放到命令执行的目录或者指定目录下。而库源码文件会被编译后,则不会在非临时目录中留下任何文件
  • clean
    • 用于清除因为执行其它go命令而遗留下来的临时目录和文件
  • doc
    • 用于显示Go语言代码包以及程序实体的文档
  • env
    • 用于打印Go语言相关的环境信息
  • fix
    • 用于修正指定代码包的源码文件中包含的过时语法和代码调用。这使得我们在升级Go语言版本的时候,可以非常方便得同步升级程学
  • fmt
    • 用于格式化指定代码包中得Go源码文件。实际上,它是通过执行gofmt命令来实现功能的
  • generate
    • 用于识别指定代码包中源码文件中的go:generate注释,并执行其携带的任意命令。该命令独立于Go语言标准的编译和安装体系,如果你有需要解析的go:generate注释,就单独运行它。这个命令非常有用,我常用它自动生成或者改动Go源码文件
  • get
    • 用于下载,编译或者安装指定的代码包以及其依赖包。从我们自己的代码中转站或者第三方代码库上自动拉取代码。就全靠它
  • install
    • 用于编译和安装指定的代码包及其依赖包。安装命令源码文件后,代码包所在的工作区目录的bin子目录,或者当前环境变量GOBIN指向的目录中会生成相应的可执行文件。而按章库源码文件后,会在代码包所在的工作区域目录的pkg子目录生成响应的归档文件
  • list
    • 用于显示指定代码包的信息,他可谓是代码包分析的一大便携工具。利用Go语言标准库代码包text/template中规定的模板语法,你可以非常灵活的控制输出的信息
  • run
    • 用于编译并运行指定的命令源码文件。当你想不生成可执行文件而直接运行命令源码文件时,就需要使用它
  • test
    • 用于测试指定的代码包,前提是该代码包目录中必须存在测试源码文件
  • tool
    • 用于执行Go语言的特殊工具
  • vet
    • 用于检查指定代码包中的Go语言源码,并报告发现可疑代码问题。该命令提供了除了编译意外的又一个程序检查方法,可以找到程序中的潜在错误
  • version
    • 用于显示当前安装go语言的版本信息以及计算环境
  • 一些通用的标记
    • -a
      • 用于强行重新编译所有涉及的Go语言代码包(包括Go语言标准库中的代码包),即使它们已经是最新的了。该标记可以让我们有机会通过改动更底层的代码包来做一些实验
    • -n
      • 使命令仅打印其执行过程中用到的所有命令,而不是真正执行它们。如果只想查看或者验证命令过程,而不想改变任何东西,使用它正合适
    • -race
      • 用于检测并报告指定Go语言的程序中存在的数据竞争问题。当用Go语言编写并发程序时,这是很重要的检测手段之一
    • -v
      • 用于打印命令执行过程中涉及的代码包。这以一定包括我们指定的目标代码包,并且有时候还会包括改代码直接或者间接依赖的那些包。这会让你知道哪些代码包被命令处理过了。
    • -work
      • 用于打印命令执行时生成和使用的临时工作目录的名字,且命令执行完成后不删除它。这个目录下的文件可能会对你有用,也可以从侧面了解命令的执行过程,如果不添加此标记,那么临时工作目录会在命令执行完毕之前删除
    • -x
      • 使命令打印其执行过程中用到的所有命令,同时执行它们
  • 好用的tool工具
    • pprof
      • 用于以交互的方式访问一些性能概要文件。命令会分析给定的概要文件,并根据要求提供高可读性的输出信息,这个工具可以分析的概要文件包括cpu概要文件、内存概要文件和程序阻塞概要文件,这些包含Go程序运行信息的概要文件,可以通过标准库代码包runtime和runtime/pprof中的程序来生成
    • trace
      • 用于读取Go程序踪迹文件,并以图形化的方式展示出来。它能够让我们深入了解Go程序在运行过程中的内部情况。比如,当前进程中堆的大小以及使用情况。又比如,程序中多个goroutine是怎么被调度的,以及它们在某个时刻被调度的原因。Go程序踪迹文件可以通过标准代码包runtime/trace和net/http/pprof中的程序来生成
    • 工具说明
      • 由于两个工具都受到go test命令的直接支持,因此我们可以很方便的把他们融入到程序测试过程中
        持续更新,敬请关注–>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值