1. 结构体的定义在 Go 语言中,可以使用 type 关键字来定义一个结构体。结构体的字段可以是不同类型的数据:
12345type Person struct { Name string Age int Address string}
在上面的示例中,定义了一个 Person 结构体,它包含 Name、Age 和 Address 三个字段。
2. 结构体的使用结构体定义后,可以使用 var 或 := 语法来创建结构体实例,并对字段进行赋值和访问。
12345678910// 使用 var 声明var p1 Personp1.Name = "Alice"p1.Age = 30// 使用字面量初始化p2 := Person{Name: "杨幂", Age: 18, Address: "北京"}// 访问结构体字段fmt.Println(p2.Name) // 输出:杨幂
3. 结构体的嵌套结构体可以嵌套在其他结构体中,从而实现复合数据类型:
1234567891 ...
1. Map 的声明在 Go 语言中,可以使用 map[KeyType]ValueType 语法来声明一个 Map。KeyType 是键的类型,ValueType 是值的类型。
1var m map[string]int // 声明一个键为字符串、值为整数的 Map
需要注意的是,Map 是引用类型,未初始化的 Map 是 nil,无法直接进行赋值操作。
2. Map 的初始化有三种方式可以初始化一个 Map:
使用 make 函数初始化空的 Map:
1m := make(map[string]int) // 初始化一个空的 Map
使用字面量方式初始化带有数据的 Map:
1m := map[string]int{"a": 1, "b": 2}
使用 make 函数创建具有特定容量的 Map(提升性能):
1m := make(map[string]int, 10) // 创建一个具有 10 个容量的 Map
3. Map 的键值操作在 Map 中,键值操作非常简单:
添加键值对:
1m["c& ...
在 Golang 中,数组和切片是存储和处理集合数据的基本结构。为了编写高效、清晰的 Go 程序,必须深入理解它们的特性及内存管理方式。本文将全面讲解数组与切片的声明、初始化、使用、内存布局及常见操作。
1. 数组概述数组是固定长度、元素类型相同的集合。定义数组时,其长度必须明确指定,且一旦定义就不能改变。
数组声明与初始化声明数组1var arr [5]int // 长度为5的整型数组,元素默认值为0
初始化数组
使用大括号进行初始化:
1arr := [5]int{1, 2, 3, 4, 5} // 长度为5的数组
使用 ... 自动推断长度:
1arr := [...]int{10, 20, 30} // 长度为3
部分初始化:
1arr := [5]int{1: 10, 3: 30} // [0, 10, 0, 30, 0]
访问和修改数组元素通过索引访问和修改元素,索引从0开始:
12arr[0] = 100 // 修改第一个元素fmt.Println(arr[0]) // 输出100
...
服务端
未读Golang 中,函数是编程的基本单元,是封装逻辑、提高代码复用性和模块化编程的关键工具。本文将涵盖 Golang函数定义与使用的核心知识点,包括参数、返回值、多返回值及可变参数。
1. 函数的基本定义在 Golang 中,定义一个函数的语法如下:
123func 函数名(参数列表) (返回值列表) { // 函数体}
func:声明函数的关键字。
函数名:函数的名称,用于调用函数。
参数列表:输入参数及其类型。
返回值列表:返回值及其类型。
函数体:函数执行的逻辑代码。
示例123456789101112package mainimport "fmt"func greet(name string) string { return "Hello, " + name}func main() { message := greet("Gopher") fmt.Println(message)}
此示例中,greet 函数接受一个 string ...
控制结构用于控制程序的执行流。主要的控制结构包括 if 语句、for 循环、switch 语句和 goto语句。本文将详细介绍这些控制结构的用法和特点。
1 if 语句if 语句用于条件判断,根据条件的真假决定是否执行某段代码。
1.1 基本用法123if condition { // 条件为真时执行的代码}
1.2 if-else 语句12345if condition { // 条件为真时执行} else { // 条件为假时执行}
1.3 if-else if-else 语句支持多个条件判断
1234567if condition1 { // 条件1为真时执行} else if condition2 { // 条件2为真时执行} else { // 所有条件都为假时执行}
1.4 简短声明在 if 的条件部分可以使用简短声明。
12345if num := 10; num%2 == 0 { fmt.Pri ...
1 变量在 Go 语言中,变量用于存储数据,使用关键字 var 定义变量。变量的类型可以在声明时显式指定,也可以由编译器根据初始值推断。
1.1 变量声明以下是变量声明的几种方式:
1.1.1 显式声明12var name string = "Alice"var age int = 30
1.1.2 类型推断12var name = "Alice" // 编译器推断类型为 stringvar age = 30 // 编译器推断类型为 int
1.1.3 简短声明12name := "Alice"age := 30
1.2 变量作用域Go 语言中,变量的作用域由其声明的位置决定。变量可以是包级的,也可以是局部的。
12345678var globalVar = "I am global"func main() { var localVar = "I am local" fmt.Println(globalVar) fmt.Println(loca ...
编译Go程序在上一节中,我们编写了一个简单的 Hello, World 程序。本节将介绍如何编译和执行 Go 程序,从而使代码在不同平台上高效运行。在终端中,导航到 main.go 文件所在的目录,执行以下命令来编译程序:
1go build main.go
这将生成一个名为 main(或 main.exe,取决于操作系统)的可执行文件。编译后的文件包含所有代码和依赖库,无需其他环境即可独立运行。
编译指令说明
go build 是 Go 的编译命令,用于将 Go 源文件编译成二进制可执行文件。
main.go 是我们编写的源文件名。
编译时,Go 编译器会自动处理依赖关系,并将代码编译成一个包含所有必要库的可执行文件。
执行程序编译完成后,可以直接运行生成的可执行文件来查看输出:
12./main # 在 Unix/Linux/MacOS 系统上main.exe # 在 Windows 系统上
执行程序后,终端将输出以下内容:
1Hello, World!
一步到位 go run除了 go build,Go 还提供了 go run 命令,允许直接运行 Go 文 ...
Hello World同其他语言一样,从HelloWorld开始认识Go语言
1234567package mainimport "fmt"func main() { fmt.Println("Hello, World!")}
分析以上代码:
第 1 行:package main在 Go 中,所有的代码都必须定义在一个包(package)中。这里我们使用了 main 包,这是 Go 程序的入口包:
包名 main 告诉 Go 编译器这是一个独立的可执行程序,编译器会从此包中寻找程序的入口点。
如果编写的包是作为库使用,通常会使用其他名称,而非 main。
第 3 行:import “fmt”
import 语句用于导入其他包。fmt 是 Go 标准库中的格式化 I/O 包,包含许多用于输出的函数。
在此程序中,fmt 包提供了 Println 函数来打印输出。
第 5 行:func main()
main 函数是程序的入口点。每个 Go 程序都需要一个 main 函数,程序会从此函数开始执行。
定义函数的语 ...
MacOS 安装推荐使用HomeBrew安装1brew install golang
官网下载二进制包安装下载地址:https://go.dev/dl/
下载二进制包go1.4.linux-am lind64.tar.gz
将下载的二进制包解压至 /usr/local目录
1tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
将 /usr/local/go/bin 目录添加至 PATH 环境变量
1234export PATH=$PATH:/usr/local/go/binsource ~/.bash_history# 如果默认shell为zshsource ~/.zshrc
注:以上命令只能暂时添加PATH,终端关闭后清除,根据默认shell不同,编辑对应的配置文件以永久生效
前言Go 语言是一种设计用于构建高性能分布式系统的编程语言,尤其适合用于搭载 Web 服务器、存储集群等中央服务器的系统开发。相较于其他编程语言,Go在高性能分布式系统领域提供了更高的开发效率,并且具备强大的并行处理能力。
Go 是编译型语言Go 是一种编译型语言,采用编译器将源代码编译为二进制(或字节码)格式。在编译过程中,编译器不仅会检查代码中的错误,还会进行性能优化,并生成适用于不同平台的可执行文件。创建和运行Go 程序的基本步骤如下:
使用文本编辑器编写 Go 程序。
保存文件。
编译程序。
运行生成的可执行文件。
语法简单Go 的语法在类型和规则上与 C99 和 C11 有很多相似之处,这也是 Go 被称为“下一代 C 语言”的原因之一。Go 语言的语法设计处于简单与复杂之间。与C 语言相比,Go 拥有更严谨的语法规则,没有历史遗留问题,能够从一开始就进行良好的规划。Go的语法规则清晰明了,没有模棱两可的地方,任何人编写的代码都能保持一致性。这种简洁性使得 Go 语言易于学习和维护。通过放弃某些灵活性和自由,Go提高了代码的可维护性。例如,Go 将 ++ 和 -- 运算符 ...