Go语言进行到这,就该像学习其他语言一样,开始了解一些基础语法了;
1. 变量
1.1赋值与声明
变量的声明开始吧,这里举个例子
var a int
a = 10
它也可以这么写
var b int =20
还可以用一种简单的运算符 :=
c := 5
以上呢都可以进行变量声明赋值的操作
1.2 if/else
在go语言中 if /else 的用法如下
if condition {
// Do something if the condition is true
} else {
// Do something else if the condition is false
}
其中 condition 就是所需要判断的条件
1.3 循环 在go语言中,循环主要有两种方式 1.3.1for循环
for 初始语句; 条件语句; 结束语句 {
循环体语句
}
举个例子
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
输出结果为:
1
2
3
4
5
1.3.2.range循环
话不多说,直接上个例子
for index, value := range collection {
//循环体语句
}
其中,index为下标或键名,value为对应的值,collection为数组、切片、映射或通道。 来个实例
package main
import "fmt"
func main() {
arr := []int{1, 2, 3, 4, 5}
for index, value := range arr {
fmt.Println(index, value)
}
}
运行结果
0 1
1 2
2 3
3 4
4 5
1.4 switch 与c/c++,只能说一个套路
switch 变量名 {
case 值1:
// 执行语句1
case 值2:
// 执行语句2
...
default:
// 执行默认语句
}
1.5 数组
在go语言中,数组是一种固定长度的数据结构,用于存储相同类型的元素。声明数组时需要指定数组的长度和元素的类型,例如:
var arr [5]int // 声明一个长度为5,类型为int的数组
数组的元素可以通过索引访问,索引从0开始,例如:
arr[0] = 1 // 设置第1个元素的值为1 fmt.Println(arr[0]) // 输出第1个元素的值
也可以使用for循环遍历数组中的元素,例如:
for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }
注意,在go语言中,数组是值类型,传递数组时会复制整个数组,对副本的修改不会对原数组产生影响。
1.6 切片
package main
import "fmt"
func main(){
// 创建一个包含5个元素的整数切片
numbers := []int{1, 2, 3, 4, 5}
// 打印整个切片
fmt.Println(numbers)
// 打印切片第2个到第4个元素
fmt.Println(numbers[1:4])
// 打印切片第1个到第3个元素
fmt.Println(numbers[:3])
// 打印切片第3个到最后一个元素
fmt.Println(numbers[2:])
// 创建一个空的切片
var empty []int
fmt.Println(empty)
}
运行结果是:
[1 2 3 4 5]
[2 3 4]
[1 2 3]
[3 4 5]
[]
演示了创建、切割和打印切片的操作,其中 []int 表示整数切片,{} 中的数字为切片中的元素。
1.7 map
俗称映射,Map是一种无序且键值对的集合,其中每个键唯一且对应一个值。Map适用于快速查找和检索,并且可以高效地插入、更新和删除键值对。Map中的键可以是任何可以用==运算符比较的类型,而值可以是任何类型。在Go语言中,声明一个Map的方法如下:
Map是一种无序且键值对的集合,其中每个键唯一且对应一个值。
Map适用于快速查找和检索,并且可以高效地插入、更新和删除键值对。
Map中的键可以是任何可以用==运算符比较的类型,而值可以是任何类型。
在Go语言中,声明一个Map的方法如下:
var myMap map[keyType]valueType
其中,keyType为键的类型,valueType为值的类型。例如,声明一个键为string类型,值为int类型的Map,可以使用以下代码:
var myMap map[string]int
Map的使用方法包括添加、删除和查询操作,可以使用以下语句实现:
myMap[key] = value 增添
delete(myMap, key) 删除
value := myMap[key] 查询
1.8 range
在 Go 语言中,range 关键字主要用于遍历数组、切片、字符串、映射(Map)和通道(Channel)等数据结构中的元素。 range 可以返回两个值,一个是元素的下标,另一个是元素本身。如果在遍历时不需要使用下标,可以使用 _ 操作符来忽略它。
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums
{
sum += num
}
fmt.Println("sum:", sum)
}
输出
sum:9
通过 range 关键字遍历切片数组的每一个元素,并将其相加,输出结果为 9。
1.9函数
Go语言的函数是一段具有特定功能的代码块,可以通过函数名和参数列表的调用来执行其中的代码。函数可以返回一个或多个值,但不支持函数重载。函数可以有多个参数,每个参数都可以指定参数名称和参数类型。Go语言的函数也支持可变参数列表,并且可以使用命名返回值来返回多个值。 func语法格式:
func function_name( [parameter list] ) [return_types] {
函数体
}
其中参数列表和返回值类型均可以省略,如果没有返回值类型,则函数体内不能使用return语句返回值。如果参数列表为空,则可以省略括号。
1.10指针 举个例子
package main
import "fmt"
func main() {
// 定义一个整型变量
num := 10
// 定义一个指针变量,存储 num 变量的内存地址
numPtr := &num
// 打印 num 变量的值
fmt.Println("num 的值为:", num)
// 打印 num 变量的内存地址
fmt.Println("num 的内存地址为:", &num)
// 打印指针变量 numPtr 存储的内存地址
fmt.Println("numPtr 存储的内存地址为:", numPtr)
// 打印指针变量 numPtr 指向的变量的值
fmt.Println("numPtr 指向的变量的值为:", *numPtr)
// 修改指针变量 numPtr 指向的变量的值
*numPtr = 20
// 再次打印 num 变量的值,已经被修改为 20
fmt.Println("修改后的 num 的值为:", num)
}
此代码定义了一个整型变量 num,并通过 & 符号获取了它的内存地址,将其存储在指针变量 numPtr 中。然后通过 fmt 包中的函数打印了 num 的值、num 的内存地址以及 numPtr 存储的内存地址。最后,通过 * 符号获取了 numPtr 指向的变量的值,并将其修改为 20。
1.11 结构体
go语言中,结构体是一种重要的数据组织方式,常用于表示复杂的数据结构。它由一系列的字段组成,每个字段都有一个字段名和一个字段类型,可以使用"."语法来访问字段值。结构体可以作为参数传递给函数,也可以用于定义接口类型等。
此代码定义了一个名为 Person 的结构体,其中有两个属性:name 和 age。然后,我们在 main 函数中初始化了一个 Person 对象,并访问了其属性。最后,我们修改了 Person 对象的年龄属性,并输出了修改后的结果。
type Person struct {
name string
age int
}
func main() {
// 初始化 Person 结构体
person := Person{"Tom", 20}
// 访问结构体中的属性
fmt.Println("Name:", ![]()person.name)
fmt.Println("Age:", person.age)
// 修改结构体中的属性
person.age = 25
fmt.Println("New age:", person.age)
}
1.12字符串
在Go语言中,字符串操作包括:
. 字符串长度计算:len(str)
. 字符串连接:str1 + str2 或 strings.Join(strList, sep)
. 子字符串查找:strings.Contains(str, subStr)
. 字符串替换:strings.Replace(str, old, new, n)
. 字符串分割:strings.Split(str, sep)
. 字符串去除前后空格等特殊字符:strings.TrimSpace(str)
. 字符串大小写转换:strings.ToUpper(str) 和 strings.ToLower(str)
. 字符串格式化:fmt.Sprintf(format, a, b, ...)
. 字符串比较:strings.Compare(str1, str2) 或直接使用==或!=进行比较
. 其他字符串操作函数,例如strings.Index、strings.LastIndex等等。
1.13 时间
time.now函数,读取系统当前时间
now := time.Now()
暂且写到这里,提桶跑路嘿嘿0.0