李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
02.Golang入门程序
Leefs
2022-06-27 PM
1502℃
0条
[TOC] ### 前言 ![02.GO语言入门程序01.jpeg](https://lilinchao.com/usr/uploads/2022/06/3550920120.jpeg) 在执行GO语言时需要先安装一个SDK + [Go 安装包下载](https://studygolang.com/dl) Windows系统只需要下载对应版本的以`.msi`后缀结尾的文件即可。安装完成后自动加入环境变量,不需要手动配置。 安装过程很简单本文就不在赘述。 安装完成后打开cmd查看是否安装成功 ```go go version ``` ### 一、第一个GO程序 > 需求:在控制台输出"Hello World!" ```go package main // 声明 main 包 import "fmt" // 导入 fmt 包,打印字符串时需要用到 func main() { // 声明 main 主函数 fmt.Println("Hello World!") // 打印 Hello World! } ``` 大家也许不明白这些代码的含义,没关系,下面就来一一介绍。 #### 1.1 package(创建包) Go语言以“包”作为管理单位,每个 Go 源文件必须先声明它所属的包,所以我们会看到每个 Go 源文件的开头都是一个 package 声明。 **格式如下:** ```go package name //package 是声明包名的关键字,name 为包的名字。 ``` **Go语言的包与文件夹是一一对应的,它具有以下几点特性:** - 一个目录下的同级文件属于同一个包。 - 包名可以与其目录名不同。 - main 包是Go语言程序的入口包,一个Go语言程序必须**有且仅有一个** main 包。如果一个程序没有 main 包,那么编译时将会出错,无法生成可执行文件。 #### 1.2 import(导入包) 在包声明之后,是 import 语句,用于导入程序中所依赖的包,导入的包名使用双引号`""`包围,格式如下: ```go import "name" // import 是导入包的关键字,name 为所导入包的名字。 ``` 上方示例代码中导入了 fmt 包,这行代码会告诉 Go 编译器,我们需要用到 fmt 包中的函数或者变量等,fmt 包是Go语言标准库为我们提供的,用于格式化输入输出的内容(类似于C语言中的 stdio.h 头文件),类似的还有 os 包、io 包等。 另外有一点需要注意,导入的包中不能含有代码中没有使用到的包,否则Go编译器会报编译错误,例如` imported and not used: "xxx"`,"xxx" 表示包名。 也可以使用一个 import 关键字导入多个包,此时需要用括号`( )`将包的名字包围起来,并且每个包名占用一行,也就是写成下面的样子: ```java import( "name1" "name2" ) ``` 代码的第三行创建了一个 main 函数,它是Go语言程序的入口函数,也即程序启动后运行的第一个函数。 **main 函数只能声明在 main 包中,不能声明在其他包中,并且,一个 main 包中也必须有且仅有一个 main 函数。** main 函数是自定义函数的一种,在Go语言中,所有函数都以关键字 func 开头的,定义格式如下所示: ```go func 函数名 (参数列表) (返回值列表){ 函数体 } ``` **格式说明如下:** - **函数名**:由字母、数字、下画线`_`组成,其中,函数名的第一个字母不能为数字,并且,在同一个包内,函数名称不能重名。 - **参数列表**:一个参数由参数变量和参数类型组成,例如`func foo( a int, b string )`。 - **返回值列表**:可以是返回值类型列表,也可以是参数列表那样变量名与类型的组合,函数有返回值时,必须在函数体中使用 return 语句返回。 - **函数体**:能够被重复调用的代码片段。 > 注意:Go语言函数的左大括号`{`必须和函数名称在同一行,否则会报错。 #### 1.3 打印 Hello World 代码`fmt.Println("Hello World!")`中,Println 是 fmt 包中的一个函数,它用来格式化输出数据,比如字符串、整数、小数等,类似于C语言中的 printf 函数。 这里我们使用 Println 函数来打印字符串,也就是`( )`里面使用`""`包裹的部分。 > 注意,Println 函数打印完成后会自动换行,ln是 line 的缩写。 另外,代码`fmt.Println("Hello World!")`的结尾,不需要使用`;`来作为结束符,Go 编译器会自动帮我们添加,当然,在这里加上`;`也是可以的。 ### 二、编译与运行 Go语言是编译型的静态语言(和C语言一样),所以在运行Go语言程序之前,先要将其编译成二进制的可执行文件。 **可以通过Go语言提供的`go build`或者`go run`命令对Go语言程序进行编译:** - `go build`命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件; ![02.GO语言入门程序02.jpg](https://lilinchao.com/usr/uploads/2022/06/82516876.jpg) - `go run`命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序。 ![02.GO语言入门程序03.jpg](https://lilinchao.com/usr/uploads/2022/06/4281214288.jpg) #### 2.1 go build命令 `go build`命令用来启动编译,它可以将Go语言程序与相关依赖编译成一个可执行文件,其语法格式如下。 ```go go build fileName ``` + **fileName**:为所需要的参数,可以是一个或者多个 Go 源文件名(当有多个参数时需要使用空格将两个相邻的参数隔开),也可以省略不写。 使用 go build 命令进行编译时,不同参数的执行结果也是不同的。 **(1)当参数不为空时** + 如果 fileName 为同一 main 包下的所有源文件名(可能有一个或者多个),编译器将生成一个与第一个 fileName 同名的可执行文件(如执行`go build abc.go def.go ...`会生成一个 abc.exe 文件); + 如果 fileName 为非 main 包下的源文件名,编译器将只对该包进行语法检查,不生成可执行文件。 **(2)当参数为空时** + 如果当前目录下存在 main 包,则会生成一个与当前目录名同名的“目录名.exe”可执行文件(如在 hello 目录中执行`go build`命令时,会生成 hello.exe 文件); + 如果不存在 main 包,则只对当前目录下的程序源码进行语法检查,不会生成可执行文件。 **附加参数** | 参数 | 备注 | | ----- | ----------------------------------------- | | -o | 指定编译后生成的文件名 | | -v | 编译时显示包名 | | -p n | 开启并发编译,默认情况下该值为CPU逻辑核数 | | -a | 强制重新构建 | | -n | 打印编译时会用到的所有命令,但不真正执行 | | -x | 打印编译时会用到的所有命令 | | -race | 开启竞态检测 | #### 2.2 go run 命令 除了使用`go build`命令外,Go语言还为我们提供了`go run`命令,`go run`命令将编译和执行指令合二为一,会在编译之后立即执行Go语言程序,但是不会生成可执行文件。 **`go run`命令的语法格式如下:** ``` go run fileName ``` 其中 fileName 为所需要的参数,参数必须是同一 main 包下的所有源文件名,并且不能为空。 **附加参数** | 参数 | 备注 | | ------ | -------------------------------------------------- | | -a | 强制编译相关代码,无论编译结果是否是最新的 | | -n | 打印编译过程中所需运行的命令,但并不会真正执行它们 | | -x | 打印编译过程中所需运行的命令并执行 | | -p n | 并行编译,n为并行数量,通常为CPU逻辑核心数量 | | -v | 打印被编译的代码包名称 | | --work | 打印编译时创建的临时工作目录路径且不删除 | ### 三、执行代码 #### 2.1 go build执行 **(1)windows系统cmd窗口进入到main.go目录** ```go D:\Go_Codes\base_demo\base01>go build main.go ``` 在当前目录下生成一个`main.exe`可执行文件。 在windows系统下执行生成main.exe文件,在Linux系统下执行生成main可执行文件,没有`.exe`后缀。 **(2)执行该文件** ```go D:\Go_Codes\base_demo\base01>main.exe Hello World! ``` 注意:在执行main.exe时前面不需要加`./`,否则会报错。 #### 2.2 go run执行 ```go D:\Go_Codes\base_demo\base01>go run main.go Hello World! ``` 没有生成可执行文件main.exe,直接输出结果。
标签:
Golang基础
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2188.html
上一篇
01.Golang介绍
下一篇
03.Golang基础之变量与常量
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
JavaWeb
栈
前端
Kibana
MySQL
Beego
gorm
并发线程
Tomcat
RSA加解密
递归
Map
Docker
Java
nginx
Linux
BurpSuite
哈希表
FileBeat
Http
锁
Spark SQL
Yarn
容器深入研究
数学
pytorch
JavaScript
Spark Streaming
SQL练习题
Golang基础
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭