前情提要
最近刚好赶上项目维护期间,又没有新项目,有些闲暇时间,学习一下go语言。了解了解这个热门语言,嘿嘿,这篇文章别被领导看见,要不可研究不了噜。
PS:本示例是演示的是官网示例,但代码有一部分不同,是以JavaScript的编码风格来嘟
Go的安装
首先点击访问此链接,下载对应你系统的Go程序,如图楼主下载的就是window版
下载并安装完成后,在命令行执行 go version 命令查看是否安装成功,如下图所示
go version
go version go1.21.6 windows/amd64 # 出现代码安装成功
go模块的初始化
在你的学习文件夹,创建一个主目录go-hello并进入,接着创建模块的文件夹,并执行 go mod init example.com/hello 初始化模块
mkdir go-hello #创建主目录
cd go-hello #主进入目录
mkdir hello #创建模块对应文件夹
cd hello #进入模块文件夹
go mod init example.com/hello #初始化模块
模块初始化成功后,可以在命令行看到如下内容,且文件夹会多出一个 go.mod 文件
go: creating new go.mod: module example.com/hello
输出一个hello world
我们在hello文件夹下,创建一个hello.go文件,并输入如下代码
type nul> hello.go
package main // 主模块
import "fmt" // 引入一个格式化数据库
func main(){
var message string = "hello world"
// message := "hello world"
fmt.Println(message)
}
解释说明:
- package main 表示声明当前为main模块,这个main模块就等同于我们的js里的启动文件,比如vue-cli里的main.js那个感觉
- import "fmt 表示引入一个格式化数据的库,想必写js的小伙伴很熟悉,其实这段话就和我们引入库是一样的,都是用import关键字后面表示库名。且go和我们js也一样,引入的库都需要进行安装,只不过这里这个库不需要,它是go的内置库。
- func main(){} 表示声明一个名称为main的函数,和我们js语法基本一致,只不过go不需要写全function,只写一部分func即可。在段代码中函数名main非常特殊,是属于一个非调用也会执行的函数,在命令行运行时,其代码一定会执行,。
- var message string = “hello world” 即为声明变量,和我们js语法差不多,但是在变量名后面多了一个类型要声明。如果不想声明类型,也可以像下面备注的语句 message := “hello world” 一样,直接赋值。
- fmt.Println(message) 即为调用库中的函数,和js不同go中的库都是小写,函数首字母都是大写。
接着我们回到命令行,输入 go run . 指令执行代码,可以看到如下效果
go run .
hello world
输出一个随机hello
首先在hello.go文件中,我们引入一个math/rand库,进行随机数的返回,以下两种形式都可以
……
// 第一种引入法,像js一样
// import "fmt" 引入一个格式化数据库
// import "math/rand" 引入一个随机数库
// 第二种引入法,go推荐的引入法
import (
"fmt" // 引入一个格式化数据库
"math/rand" // 引入一个随机数库
)
……
接着我们创建一个返回随机字符的函数,这里注意和js有不同,go返回值的类型,必须在函数中定义
func randomHello() string {
// 定义一个字符串类型的切片
var messages = []string{
"hello 张三",
"hello 李四",
"hello 王五",
}
return messages[rand.Intn(len(messages))] // 根据随机坐标返回一个值
}
解释说明:
- func randomHello() string{……} 表示定义一个函数名为randomHello,返回的类型为字符串的函数
- var messages = []string{……} 表示声明一个长度为3的切片,为什么是切片而不是数组,是因为数组在go中是长度是固定的,不像js一样可动态添加,所以一般都使用切片
- rand.Intn(数字x) 该函数会在给定数字的范围中随机返回一个,比如给定2则会在0-2中随机返回一个数
- len(切片x) 该函数会返回切片的长度
- messages[…] 根据坐标取切片中的某个值,和JavaScript里数组取值一样,坐标也是从0开始
同时我们将main主函数的代码,调整为如下
func main() {
fmt.Println(randomHello())
}
接着我们回到命令行,输入 go run . 指令执行代码,可以看到如下效果
go run .
hello 张三
go run .
hello 王五
代码的构建
我们在命令行中输入 go build 代码构建
go build
构建完成后,可以在hello文件夹下看到 hello.exe
接着我们回到命令行,输入几次hello命令,可以看到直接输出了随机hello。这是因为go会默认安装在系统的shell目录,所以可以在命令行直接执行
hello
hello 张三
hello
hello 王五
通过输入 go list -f ‘{{.Target}}’ 可以查看安装的路径
go list -f '{{.Target}}'
'C:\Users\Administrator\go\bin\hello.exe'