在本章中,我们将深入探讨 Go 编程语言的基本构建块。 我们将从编写第一个 Go 程序开始,逐步探索基本概念,例如数据类型、变量、常量和基本运算符。 在本章结束时,您将对基础知识有一个扎实的了解,为您的 Go 编程之旅奠定坚实的基础。
2.1 Hello, World! - 你的第一个Go程序
让我们从写传统的“Hello, World!”开始。 Go 中的程序。 该程序将演示 Go 程序的基本结构以及如何运行它。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
在上面的代码片段中,我们声明了一个 main 函数,它作为任何 Go 程序的入口点。 导入`fmt`包来访问`Println`函数,该函数打印消息“Hello, World!” 到控制台。 要执行该程序,请将其保存在扩展名为“.go”的文件中,例如“hello.go”,然后在终端中运行以下命令:
go run hello.go
您应该看到输出:
Hello, World!
2.2 Go工作空间和目录结构
在继续之前,我们先简要讨论一下 Go 工作区的概念。 Go 工作区是存储 Go 源代码文件及其关联的二进制文件和包的目录。 默认情况下,Go 希望所有项目都位于一个工作区中,该工作区通常具有以下目录结构:
workspace/
├── bin/
├── src/
│ └── github.com/
│ └── your_username/
├── pkg/
└── hello.go
- `src` 目录包含根据包路径组织的 Go 源文件。
- bin 目录存放编译后的可执行二进制文件。
- `pkg` 目录保存已编译的包文件。
注意:从 Go 1.11 开始,Go 引入了模块支持,允许在传统工作空间之外组织项目。
2.3 数据类型
Go 是静态类型的,这意味着变量类型必须在编译时显式声明。 以下是 Go 中的一些基本数据类型:
- **数字类型:** `int`、`int8`、`int16`、`int32`、`int64`、`uint`、`uint8`、`uint16`、`uint32`、`uint64`、`float32 `、`float64`。
- **布尔类型:** `bool` (真或假)。
- **字符串类型:** `字符串`(字符序列)。
- **复杂类型:** `complex64`、`complex128`。
例如:
package main
import "fmt"
func main() {
var age int = 30
var pi float64 = 3.14159265359
var name string = "John Doe"
var isStudent bool = true
fmt.Println("Name:", name)
fmt.Println("Age:", age)
fmt.Println("Is Student:", isStudent)
fmt.Println("Value of pi:", pi)
}
2.4 变量和常量
在Go中,变量用于存储和管理在程序执行过程中可以更改的数据,而常量用于表示无法修改的固定值。
**变量:**
package main
import "fmt"
func main() {
var age int
age = 30
var name string = "Alice"
// Type inference - Go can automatically infer the type of the variable.
country := "USA"
fmt.Println("Name:", name)
fmt.Println("Age:", age)
fmt.Println("Country:", country)
}
**常数:**
package main
import "fmt"
const pi = 3.14159265359
func main() {
const companyName string = "Acme Inc."
fmt.Println("Pi:", pi)
fmt.Println("Company Name:", companyName)
}
2.5 基本运算符和表达式
与其他编程语言一样,Go 支持一系列算术、比较和逻辑运算符。
**算术运算符:** `+`、`-`、`*`、`/`、`%`(加、减、乘、除、模)。
**比较运算符:** `==`、`!=`、`<`、`>`、`<=`、`>=`(等于、不等于、小于、大于、小于 或等于、大于或等于)。
**逻辑运算符:** `&&`、`||`、`!`(逻辑 AND、逻辑 OR、逻辑 NOT)。
例如:
package main
import "fmt"
func main() {
var num1, num2 int = 10, 20
sum := num1 + num2
difference := num1 - num2
product := num1 * num2
quotient := num1 / num2
remainder := num1 % num2
fmt.Println("Sum:", sum)
fmt.Println("Difference:", difference)
fmt.Println("Product:", product)
fmt.Println("Quotient:", quotient)
fmt.Println("Remainder:", remainder)
isEqual := num1 == num2
isGreaterThan := num1 > num2
logicalAnd := true && false
logicalOr := true || false
logicalNot := !true
fmt.Println("IsEqual:", isEqual)
fmt.Println("IsGreaterThan:", isGreaterThan)
fmt.Println("LogicalAnd:", logicalAnd)
fmt.Println("LogicalOr:", logicalOr)
fmt.Println("LogicalNot:", logicalNot)
}
2.6 类型转换
在 Go 中,将一种类型的值赋给另一种类型的变量时,需要显式类型转换。
package main
import "fmt"
func main() {
var num1 int = 10
var num2 float64 = 5.5
// Converting int to float64
result := float64(num1) + num2
fmt.Println("Result:", result)
}
在本章中,我们介绍了 Go 编程的基础知识,包括如何编写和运行基本的 Go 程序、数据类型、变量、常量和基本运算符。 有了这些知识,您现在就可以探索更复杂的概念并深入研究使用 Go 构建现实世界的应用程序。 在下一章中,我们将重点讨论 Go 编程中的控制结构和决策。 继续前进!