Go,Hello,World!
前言
Go语言作为一门全新的静态类型开发语言,它的诞生最初是因为Google的软件系统面临复杂性爆炸的问题(并不为Google所独有)。而得益于其本身简洁高效的设计理念和强大的并发模型以及Google的大力支持,Go语言迅速发展,应用于众多领域。
按照传统,认识和了解Go不如从Hello,World
开始,以下是Go版本的Hello,World
:
package main
import "fmt"
func main() {
fmt.Println("Hello,World")
}
本文将从上述代码出发,介绍Go的一些基本内容,增加读者对Go的认识。
Go的工具链
类似Java中的java
、javac
,Go也有自己的一套工具链,它们是代码运行的基础。
go run
编译和执行go build
编译go fmt
格式化文件中的代码go install
编译和下载包go get
下载包的源代码
package
在Go中,package
是一个关键字,用于定义代码文件所属的包(package)。一个包是一组相关的.go
文件的集合,用于组织和管理代码。每个.go
文件的开头第一条语句都必须声明所属的包,用于告诉编译器该文件中定义的函数、类型和变量所属的命名空间。
Go语言中有两种主要类型的包:
-
可执行包(Executable Package):
- 可执行包用于生成可执行文件,其中必须包含一个名为
main
的函数作为程序的入口点。 - 可执行包的包名必须是
main
,这样编译器才知道这个包是一个可执行程序。 - 当通过
go build
或go install
编译一个可执行包时,会生成一个可执行文件,可以直接运行。
- 可执行包用于生成可执行文件,其中必须包含一个名为
-
可重用包(Reusable Package):
- 可重用包是用于封装功能或数据的代码库,可以被其他程序引用和复用。
- 可重用包的包名可以是任意合法的标识符名称,不一定是
main
。 - 可以通过
import
语句将可重用包引入其他Go程序,并使用其中定义的函数、类型和变量。
举个例子,如果我们想要创建一个可执行程序,我们需要创建一个包名为main
的可执行包,并在其中定义一个名为main
的函数作为入口点。例如:
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
如果我们想要创建一个可重用的包,我们可以创建一个任意名称的包,并在其中定义各种函数和类型。例如:
// mypackage.go
package mypackage
func Add(a, b int) int {
return a b
}
然后在main
包中的main
函数中调用
// main.go
package main
import (
"fmt"
"mypackage"
)
func main() {
result := mypackage.Add(5, 3)
fmt.Println("Result:", result)
}
import
引入源程序所依赖的包,与Java中import
的作用等同,形式上略有不同。
例如:
import (
"fmt"
"math"
)
func
func
是用来定义函数的关键字,可参考模板:
func name (parameters...) (returns...){
...
}
其中:
name
:函数的名称,遵循标识符的命名规范。parameters
:函数的参数列表,包含函数所接收的输入值。每个参数由参数名和参数类型组成,多个参数之间用逗号分隔。returns
:函数的返回值列表,指定函数返回的结果。可以有多个返回值,多个返回值用括号括起来。如果函数不返回任何值,可以省略返回值列表。
调用函数时接收返回值,可参考:
v, error := myFunc()
_, error := myFunc()
当我们不想关心函数其中的某个返回值,可以使用_
跳过它,有点类似python
不定参数
Go同样支持不定参数,合理使用不定参数,可以让代码简单易用。
func myFunc(args ...int) {
for _,arg := range args {
fmt.Println(arg)
}
}
形如...type
格式的类型只能作为函数的参数类型存在,且必须是最后一个参数,其本质上是一个数组切片。
不定参数也可以进行传递:
func myFunc(args ...int) {
//原样传递
myFunc2(args...)
//传递片段,实际上可以传递任意的int slice
myFunc3(args[1:]...)
}
如果要设定任意类型的不定参数可参考标准库中的fmt.Println()
:
func Println(a ...any) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
其中的any是interface{}
的别名
Go的代码结构范式
在写本文所列举的代码时,应遵守如下规范:
- 包(Package):Go通过包组织代码,包含一组相关的Go文件。每个Go程序都必须包含一个
main
包,作为程序的入口点。包名应该是简洁、有意义的小写字母单词,并且不使用下划线或驼峰式命名。 - 导入(Import):在Go代码中,通过
import
语句导入其他包。导入的包名应使用双引号括起来,Go标准库的包名一般简短而且易于识别。导入的包名应该按字母顺序排序。 - 可见性(Visibility):Go语言使用大小写来表示可见性。首字母大写的标识符可以在包外部访问,首字母小写的标识符仅限于包内部使用。
- 命名(Naming):Go代码中的命名应该具有描述性,避免使用过于简单的单字母命名。变量和函数的命名采用驼峰式命名法(例如:myVariable),常量的命名全部大写,用下划线分隔(例如:MY_CONSTANT)。
- 错误处理(Error Handling):Go鼓励在函数和方法中进行错误处理。使用多返回值,通常将错误作为最后一个返回值,以便调用者可以轻松地处理错误。
此外,还可以参考比较流行和权威的Go编程规范:
- Go官方编码风格指南(Effective Go) :这是Go语言官方提供的编码风格指南,详细介绍了如何写出清晰、简洁、高效的Go代码。官方文档在此
- Uber Go编码规范:Uber公司的Go编码规范在开源社区中也颇具影响力,它强调了代码的一致性、可读性和可维护性。该规范的 GitHub 仓库地址为:github.com/uber-go/gui…
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbacbi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01