系列文章目录
【Go语言学习】ide安装与配置
【GO语言基础】前言
【GO语言基础】变量常量
【GO语言基础】数据类型
文章目录
- 系列文章目录
- 一、基础知识
- 包和函数
- 函数声明
- 语法简洁性
- 括号成对出现
- GO常用DOS命令
- 命名规则
- 项目目录结构
- 注释
- 总结
一、基础知识
包和函数
//声明本代码所属包
package mainimport "fmt"//导入fmt包func main() {//声明一个名为main的函数,main为主函数为go的入口,不定义程序无法运行fmt.Println("hello,golang")//打印hello.golang
}
这段代码引入三个关键字package,import和func
package main:
- package 关键字用于声明当前代码文件所属的包(package)。在 Go中,每个代码文件都必须属于一个包,且一个包内可以包含多个代码文件。main 是一个特殊的包名,表示这是一个可执行程序的入口点。在一个 Go可执行程序中,必须包含一个 main 包,它包含了 main 函数作为程序的入口。
import "fmt":
- import 关键字用于导入其他包,以便在当前包中使用其功能。在这个代码中,通过 import “fmt” 导入了 fmt 包,fmt包提供了格式化输入和输出的函数,例如 Println 用于打印文本到标准输出。
如果未使用的导入会导致编译错误。
func main():
- func 关键字用于声明函数。在 Go 中,main 函数是特殊的,它是程序的入口点,当程序启动时,会首先执行 main 函数。 main函数没有参数,并且也没有返回值。 大括号 {} 用于包含函数的主体代码。
fmt.Println("hello, golang"):
- 这是 main 函数的主体代码。它使用 fmt 包中的 Println 函数,打印文本 "hello, golang"到标准输出(通常是终端窗口)。
函数声明
使用func关键字声明函数。函数可以返回多个值,通过逗号分隔。函数可以作为参数和返回值。
package mainimport "fmt"
//定义函数Add
func Add(a, b int) int {return a + b
}
//调用函数Add
func main() {fmt.Println(Add(100, 200))
}
语法简洁性
import如果未使用go文件无法通过编译,go编译器是一行一行编译,不要把语句写到一行,否则会产生错误。
行数较长:使用"内容内容 ",换行
括号成对出现
GO常用DOS命令
go help:用于快速显示帮助。
go run: 用于快速测试和运行Go源代码文件,特别是在开发阶段。
go build: 用于将Go代码编译成可执行文件,方便在不同环境中运行。
go test: 用于运行测试用例,确保代码的正确性和稳定性。
go fmt: 用于格式化代码,使其符合Go语言的标准格式,以提高代码的可读性。
go get: 用于获取并安装外部依赖库,方便项目中使用第三方包。
go mod init: 用于初始化Go模块,开启模块管理功能。
go mod tidy: 用于整理和清理项目中的依赖关系,移除不再使用的依赖项。
go mod vendor: 将依赖项复制到项目的vendor目录中,以实现更好的版本控制。
go doc: 查看代码实体的文档,方便了解和使用标准库以及其他包的功能。
go install: 编译并安装Go程序,将可执行文件安装到$GOPATH/bin目录。
命名规则
文件命名规则:
- Go语言源文件的扩展名为
.go
。 所有Go源代码文件都必须以.go
为扩展名。 - 文件名应该描述其内容。 文件名应该反映包内包含的类型或功能。例如,包含HTTP处理程序的文件可以命名为
http_handlers.go
。 - 避免使用特殊字符和空格。 文件名应该只包含字母、数字和下划线,避免使用特殊字符和空格。
- 包含测试代码的文件名应该以
_test.go
结尾。 用于单元测试和性能测试的文件应该以_test.go
结尾,例如mypackage_test.go
。
变量命名规则:
- 变量名由字母、数字和下划线组成。 开头必须是字母或下划线,后面可以是字母、数字或下划线。例如:
myVariable, value_1, _privateVar
。 - Go语言的变量名通常采用驼峰式命名法。 驼峰式命名法将单词连接在一起,每个单词的首字母大写,例如:
myVariableName
。 - 避免使用缩写。 尽量使用具有描述性的变量名,以提高代码的可读性。例如,使用totalCount而不是totCnt。
- 避免使用Go语言的关键字作为变量名。 例如,不要使用
func、for、if
等作为变量名。 - 变量名应该有意义。 变量名应该反映其用途或内容,以便其他开发者能够理解代码的含义。
- 公共(导出的)变量名应该以大写字母开头。 如果你希望变量在包外部可见和访问,应该以大写字母开头。例如,
MyPublicVariable
可以在其他包中访问。
以下是无效的标识符:
关键字 | 描述 |
---|---|
break | 用于跳出循环 |
default | 用于switch语句的默认分支 |
func | 用于定义函数和方法 |
go | 用于启动并发协程 |
goto | 用于无条件跳转到指定标签的语句 |
if | 用于条件语句 |
return | 用于返回函数结果 |
defer | 用于延迟执行函数调用 |
else | 用于条件语句的备选分支 |
for | 用于循环语句 |
switch | 用于多路分支语句 |
const | 用于定义常量 |
fallthrough | 用于switch语句中的默认处理 |
case | 用于switch语句的分支判断 |
continue | 用于跳过当前循环迭代 |
type | 用于定义类型 |
var | 用于声明变量 |
这些关键字不能作为命名使用,因为它们具有特殊的语法含义,用于表示Go语言的关键字。
使用驼峰命名法(CamelCase)来命名变量和函数,遵循一致的命名规范,使代码更易读。
package mainimport "fmt"func Add(a, b int) int {return a + b
}func main() {var NewTest1 int = 1 //大驼峰命名法,单词首字母大写var testVersion = "v1.0" //小驼峰命名法,除第一个单词外,其他单词首字母大写fmt.Println(NewTest1)fmt.Println(testVersion)fmt.Println(Add(100, 200))
}
项目目录结构
第一种简易模板
/myproject /bin /pkg /src /project1 /go.mod /main.go /project2 /go.mod /main.gobin 目录存放编译后的可执行文件。
pkg 目录存放编译后的包文件。
src 目录存放项目源文件。
project1 项目一
project2 项目二第二种详细目录:
myapp/
├── cmd/
│ ├── myapp/
│ │ └── main.go
├── internal/
│ ├── package1/
│ │ ├── module1.go
│ │ └── module2.go
│ ├── package2/
│ │ ├── module1.go
│ │ └── module2.go
├── pkg/
│ ├── myutil/
│ │ ├── util1.go
│ │ └── util2.go
├── api/
│ ├── api.go
├── web/
│ ├── static/
│ ├── templates/
│ ├── main.go
├── config/
│ ├── config.go
├── tests/
│ ├── test1.go
│ └── test2.go
├── README.md
└── go.mod
cmd/: 用于存放应用程序的入口文件。每个应用程序通常都有一个子目录,其名称是应用程序的名称(如myapp)。每个子目录中通常有一个main.go文件,它包含应用程序的入口点。
internal/: 用于存放项目的内部包(internal packages),这些包只能被本项目中的其他包所引用,而不能被外部包引用。
pkg/: 用于存放可以被其他项目引用的包,被称为"公共包"(public packages)。
api/: 存放用于API定义的代码,如接口、数据结构等。
web/: 存放Web应用程序相关的文件,如静态资源(static/)、模板文件(templates/)以及主要的main.go文件。
config/: 存放应用程序的配置文件,或者用于加载配置的代码。
tests/: 存放测试文件,通常以_test.go结尾,用于编写单元测试和集成测试。
README.md: 项目的说明文档,可以描述项目的用途、使用方法等。
go.mod: Go模块文件,用于定义项目的模块路径和依赖关系。
注释
行注释:
// 这是一个单行注释多行注释:
/*
这是一个多行注释,
可以跨越多行。
*/文档注释:
可以使用/**和*/来定义文档注释,这种注释通常用于生成API文档。文档注释应该出现在函数、方法或类型之前
/** * 这是一个函数,用于计算两个数的和。 * @param a 第一个加数 * @param b 第二个加数 * @return 两个数的和 */
func Add(a, b int) int { return a + b
}
总结
本文简单介绍go语言的一些基本的知识,go语言简化了很多种的语言风格,如去掉结尾的分号,为使用包引用无法编译这些强制性措施使得代码风格统一代码的简洁性增加同时提高可读性等优点。