下面是学习Go语言入门的基础语法和常用特性的个人笔记:
1、Golang开发环境的搭建
1.1、Windows下Golang开发环境
使用VsCode
1、安装VsCode
2、进入VsCode,下载Go插件
直接安装
下载Goloang安装包,Go语言官网(golang.google.cn/dl/),感觉自己电脑选择对应的安装包。安装时傻瓜式
配置环境变量
使用go version
或者go env
查看是否配置完成
注:Golang编译器选择主流的用VS Code、Jetbrains Goloang(付费,无社区版),个人感觉Golang使用起来比较舒服一点,如果是学生的可以使用学生邮箱等方法申请Jetbrains全家桶的教育包,直接白嫖;或者也有其他手段[doge]。
1.2、Linux下Golang开发环境
本人使用的Linux环境是CentOS7.8,下面以阿里云服务器搭建Go开发环境为例,当然也可以使用虚拟机进行搭建,虚拟机的Linux系统的安装操作比较简单便不再赘述。
下载Golang运行环境的SDK,选择Linux版本的进行下载,解压
wget https://dl.google.com/go/go1.21.0.linux-amd64.tar.gz
tar -zxvf go1.21.0.linux-amd64.tar.gz
// 将解压后的文件移动到你的安装目录,这里我放到/opt/go
mv go1.21.0.linux /opt/go
配置环境变量
// 使用vim编辑配置文件,加入以下三条指令
vim /etc/profile
export GOROOT=/opt/go/bin
// 编辑后保存,并刷新配置文件
source /etc/profile
使用go version
或者go env
查看是否配置完成
1.3、运行helloworld
新建helloworld.go文件,使用go build && ./main
或者go run mian.go
运行,其中前者先对go源文件进行编译生成可以执行文件后运行该文件,后者直接运行源文件不产生可执行文件。
package main
import "fmt"
func main() {
fmt.Println("Hello World")
fmt.Println("Hello Golang")
}
2、Golang基础入门
2.1、包和导入
Go程序由多个包(package)组成,每个包都是一个相关功能的集合。main
包是每个可执行程序的入口包,当程序运行时先执行main
包中的main()
函数。我们可以通过使用import
导入标准库中的包或者第三方库;
package main // 声明当前文件所属的包
import (
"fmt" // 导入标准库中的格式化包
)
// main函数是程序的入口点
func main() {
// 使用fmt包中的Println函数打印输出
fmt.Println("hello world!")
}
导入第三方库时可以使用官方推荐的依赖管理工具 go get
,通过再项目下的终端输入go get
安装指定的包或库,或者直接 go get
下载项目所有的依赖包和库,同时可以使用go mod tidy
清楚多余的项目依赖包
go get github.com/gin-gonic/gin // 终端输入
go get -u github.com/gin-gonic/gin // -u 安装或者更新到最新版本
2.2、 变量和常量
在Go中,使用var
关键字声明变量,也可以使用自动推导(有点类似余python)。同时在go中要注意的是go的变量声明但未使用,再编译时会报错。
var a int // 声明一个int的变量a
b := 5 // 定义一个int类型的变量b,值
2.3 、数据类型
Go提供了基本的数据类型,如整数、浮点数、布尔值和字符串。另外,Go还有复合数据类型,如数组、切片、映射、结构体和接口。
2.4、流程控制
Go支持常见的流程控制结构,如条件语句(if-else)、循环语句(for)、以及开关语句(switch、fallthrough)。
package main
import "fmt"
// 打印偶数
func myfunc1() {
num := 20
for i := 1; i < num; i++ {
if i %2 == 0 {
fmt.Print(i, " ")
}
}
}
func main() {
myfunc1()
}
2.5、函数
使用关键字func
定义函数。Go中的函数可以返回多个值。函数可以作为参数传递给其他函数,也可以作为返回值。
func add(a, b int) int {
return a + b
}
2.6、 结构体
结构体允许你定义自己的复合数据类型,可以包含不同类型的字段。
type Person struct {
FirstName string
LastName string
Age int
}
2.7、方法
Go允许在结构体上定义方法,这使得类型可以具有自己的行为。
func (p Person) Name() string {
return p.FirstName + " " + p.LastName
}
2.8、错误处理
Go鼓励使用多返回值来处理错误。通常,函数会返回一个结果以及一个错误(error)对象,以便调用者可以判断函数是否成功执行。
result, err := myFunc()
if err != nil {
panic() // 处理错误
}