Go语言入门教学,带你学最好玩的语言,最简单的入门(二)
在文章一中,介绍了如何去安装以及使用Go初始化指令以及使用Go编写入门的第一个程序,HelloWorld。那么接下来,开始学习Go的基础知识。❤❤❤❤❤💕
包、变量和函数
关于Go中的包
在Go语言中,包(Package)是组织和管理代码的基本单位。一个包由一组相关的源代码文件组成,这些文件放置在同一个目录下,并且在代码中使用相同的包名来引用。
包的概念有以下几个重要的特性和作用:
-
组织代码:包将相关的代码组织在一起,使得代码更加模块化和结构化。通过将代码分为多个包,可以提高代码的可读性、维护性和复用性。
-
命名空间:包提供了命名空间的机制,不同包中的标识符(如变量、函数、类型等)可以具有相同的名称而不会产生冲突。通过使用包名限定标识符的作用域,可以避免命名冲突问题。
-
可见性和封装:Go语言中的标识符的可见性是由其命名首字母的大小写来确定的。包内以小写字母开头的标识符对外部包不可见,只能在包内部访问,起到了封装的作用。包可以选择公开部分标识符,使其对外可见,以实现接口和功能的暴露。
-
依赖管理:包可以依赖其他包,通过导入(import)其他包来使用其提供的功能。通过明确定义包之间的依赖关系,可以方便地管理和维护代码。
-
可重用性:包提供了代码的封装和复用机制。可以将常用的功能封装为包,并在其他项目中重复使用。Go语言标准库就是由多个包组成的,开发者可以方便地使用标准库中的功能。
在Go语言中,使用import关键字来导入其他包,语法如下:
import "package/path"
其中,package/path表示要导入的包的路径。
导入后,可以通过包名加点号(.)来访问包中的导出标识符。
总结一下,包是Go语言中用于组织、管理和复用代码的基本单位。它具有命名空间、可见性和封装等特性,通过包的导入和使用,可以实现模块化开发和依赖管理。
我们可以通过以下代码来对包有一个更深入的理解:
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
在这段程序中,包名与导入路径的最后一个元素一致。
例如,“math/rand” 包中的源码均以 package rand 语句开始。
关于包的导入
在Go语言中,使用import进行包的导入,
在 Go 中,可以使用 import 关键字导入包。要导入一个包,你需要在代码文件的顶部使用 import 关键字,后面跟着要导入的包的路径。
例如,假设要导入 fmt 包,可以这样写:
import "fmt"
//如果要导入多个包,可以使用括号将它们括起来,并用逗号分隔,如下所示:
go
import (
"fmt"
"math"
)
有时候,你可能只想导入包而不直接使用它的标识符,可以使用下划线 _ 替代包的名称。这样做的目的是为了让编译器执行包的初始化函数,但是无法在代码中使用该包的其他标识符。
import _ "github.com/example/package"
请注意,在导入包时,Go 编译器会查找你导入的包是否在你的 GOPATH(或者 Go Modules 的情况下在项目目录)下。如果找不到包,会导致编译错误。
ps:在Go的包中,能访问到的只有开头大写的变量。
例如:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi)
//在这里,如果是math.pi是无法访问math包中的函数或者变量的,只有Pi才可以进行访问
}
关于Go中的函数
在Go语言中,函数是可执行的代码块,用于执行特定的任务或完成特定的操作。通过定义函数,可以将代码模块化并实现代码的重用。
Go语言的函数具有以下特点:
声明函数:使用func关键字声明一个函数,并指定函数的名称、参数列表和返回类型。例如:
func add(a, b int) int {
return a + b
}
参数和返回值:函数可以接受零个或多个参数,并且可以返回零个或一个值。参数和返回值都需要指定类型。例如:
func greet(name string) {
fmt.Println("Hello,", name)
}
func add(a, b int) int {
return a + b
}
多返回值:Go语言支持函数返回多个值。例如:
func swap(a, b int) (int, int) {
return b, a
}
func divide(dividend, divisor float64) (quotient float64, remainder float64) {
quotient = dividend / divisor
remainder = dividend % divisor
return // 可以省略返回值的名称
}
匿名函数:可以在函数内部定义匿名函数,并将其赋值给变量或作为参数传递给其他函数。例如:
func main() {
greeting := func() {
fmt.Println("Hello, world!")
}
greeting()
}
函数作为参数和返回值:在Go语言中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。这种特性使得函数可以更加灵活和可组合。例如:
func applyOperation(a, b int, operation func(int, int) int) int {
return operation(a, b)
}
func add(a, b int) int {
return a + b
}
func multiply(a, b int) int {
return a * b
}
func main() {
result := applyOperation(3, 4, add)
fmt.Println(result) // 输出:7
result = applyOperation(3, 4, multiply)
fmt.Println(result) // 输出:12
}
关于Go中的变量
当你在Go语言中编写程序时,变量用于存储和操作数据。在Go中,变量必须先声明然后才能使用。
以下是关于Go变量的一些重要信息:
变量声明:使用关键字var来声明一个变量,然后指定变量的名称和类型。例如:
var age int
变量初始化:在声明变量的同时,可以为其赋初值。例如:
var age int = 25
也可以使用短变量声明方式进行初始化:
age := 25 // 自动推断类型为int
类型推断:Go语言可以根据变量的值自动推断其类型,无需显式指定类型。例如:
name := "Alice" // 自动推断类型为string
多个变量声明:可以同时声明多个变量,每个变量之间使用逗号分隔。例如:
var x, y, z int
零值:在Go中,所有的变量在被声明但未被显式初始化时,会被赋予一个默认的零值。例如,整数类型的零值是0,字符串类型的零值是空字符串"",布尔类型的零值是false。
常量:常量是声明时就确定并且不能更改其值的变量。在Go中,使用关键字const来声明常量。例如:
const pi = 3.14159
变量作用域:变量的作用域是指变量在程序中可见的范围。Go语言中有块级作用域,即变量在其声明的块内可见。函数参数和局部变量的作用域限定在函数体内,而全局变量的作用域在整个包内都可见。
匿名变量:使用下划线_表示匿名变量,可以用于忽略某个值的占位。例如:
_, err := doSomething()
变量命名规则:在Go语言中,变量的命名遵循驼峰命名法,推荐使用具有描述性的名称。首字母大写的变量是导出的(可在其他包中访问),首字母小写的变量是私有的(仅在当前包内可见)。
总结💕💕💕😘
恭喜你,通过本篇文章,成功了解了Go语言中,变量,函数,以及包的概念以及使用方法,接下来将会学习控制流语句。