• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Go,Hello,World!

武飞扬头像
Renz_Wang
帮助1

前言

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中的javajavac,Go也有自己的一套工具链,它们是代码运行的基础。

  • go run编译和执行
  • go build 编译
  • go fmt 格式化文件中的代码
  • go install 编译和下载包
  • go get 下载包的源代码

package

在Go中,package是一个关键字,用于定义代码文件所属的包(package)。一个包是一组相关的.go文件的集合,用于组织和管理代码。每个.go文件的开头第一条语句都必须声明所属的包,用于告诉编译器该文件中定义的函数、类型和变量所属的命名空间。

Go语言中有两种主要类型的包:

  1. 可执行包(Executable Package):

    • 可执行包用于生成可执行文件,其中必须包含一个名为main的函数作为程序的入口点。
    • 可执行包的包名必须是main,这样编译器才知道这个包是一个可执行程序。
    • 当通过go buildgo install编译一个可执行包时,会生成一个可执行文件,可以直接运行。
  2. 可重用包(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的代码结构范式

在写本文所列举的代码时,应遵守如下规范:

  1. 包(Package):Go通过包组织代码,包含一组相关的Go文件。每个Go程序都必须包含一个main包,作为程序的入口点。包名应该是简洁、有意义的小写字母单词,并且不使用下划线或驼峰式命名。
  2. 导入(Import):在Go代码中,通过import语句导入其他包。导入的包名应使用双引号括起来,Go标准库的包名一般简短而且易于识别。导入的包名应该按字母顺序排序。
  3. 可见性(Visibility):Go语言使用大小写来表示可见性。首字母大写的标识符可以在包外部访问,首字母小写的标识符仅限于包内部使用。
  4. 命名(Naming):Go代码中的命名应该具有描述性,避免使用过于简单的单字母命名。变量和函数的命名采用驼峰式命名法(例如:myVariable),常量的命名全部大写,用下划线分隔(例如:MY_CONSTANT)。
  5. 错误处理(Error Handling):Go鼓励在函数和方法中进行错误处理。使用多返回值,通常将错误作为最后一个返回值,以便调用者可以轻松地处理错误。

此外,还可以参考比较流行和权威的Go编程规范:

  1. Go官方编码风格指南(Effective Go) :这是Go语言官方提供的编码风格指南,详细介绍了如何写出清晰、简洁、高效的Go代码。官方文档在此
  2. Uber Go编码规范:Uber公司的Go编码规范在开源社区中也颇具影响力,它强调了代码的一致性、可读性和可维护性。该规范的 GitHub 仓库地址为:github.com/uber-go/gui…

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbacbi
系列文章
更多 icon
同类精品
更多 icon
继续加载