Go语言基础<2>

38 阅读6分钟

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 变量名 {
    case1:
        // 执行语句1
    case2:
        // 执行语句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