Go基础:了解Go中的字符串,数组,切片,映射,结构体和指针

准备进入 Go 中复杂数据类型的世界吗?

full lessons here👇:
https://programmerscareer.com/zh-cn/golang-basic-skill/

由AI生成,可能有错误,仅供参考

主题:Go 中的字符串

Go 中,字符串是一系列字节,可以潜在地表示 Unicode 字符。可以使用双引号将文本创建为字符串:

1
var s string  = "Hello, Golang"

Go 还提供了许多内置函数来操作字符串,在 strings 包中,如 strings.ToLower()strings.ToUpper()strings.Trim()strings.Replace() 等。

主题:数组在 Go 中

数组是一系列具有单一类型和固定长度的元素。在 Go 中,它们看起来像这样:

1
var a [5]int

上面,我们声明了一个名为 a 的数组,用于存储恰好 5 个整数。数组的类型由其元素类型和长度组成。

主题:切片在 Go 中

Go 中的切片是一种关联数据结构(也称为哈希或字典)。

可以使用 make 命令创建一个空切片:

1
s := make([]string, 3)

可以像数组一样设置和获取值:

1
2
3
4
5
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("set:", s)
fmt.Println("get:", s[2])

切片可以是动态的。例如,可以使用 append 函数追加元素:

1
2
3
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println("appd:", s)

这就是 Go 中切片的基本知识。

主题:Map 在 Go 中

Go 中的 Map 是一种关联数据结构(也称为哈希或字典)。

可以使用 make 命令创建一个空 Map:

1
m := make(map[string]int)

可以使用 typical name[key] = val 语法设置键/值对:

1
2
m["Key1"] = 7
m["Key2"] = 13

可以使用 name[key] 语法获取一个键的值:

1
2
v1 := m["Key1"]
fmt.Println("v1:", v1)

builtin delete 函数可以从 Map 中删除键/值对:

1
2
delete(m, "Key2")
fmt.Println("map:", m)

optional 第二个返回值在获取值时指示键是否存在于 Map 中。这可以用来区分缺少的键和具有零值的键,如 0""

1
2
_, isThere := m["UnkownKey"]
fmt.Println("isThere:", isThere)

现在,我们将转到 Structs。

主题:Structs 在 Go 中

Go 的 structs 是一种类型化的字段集合。它们非常适合将相关数据元素组合在一起。

以下是一个 Go 中的 struct 示例:

1
2
3
4
type Person struct {
name string
age int
}

这定义了一个新的类型,我们可以使用它创建新的 Person 对象:

1
2
p := Person{name: "Alice", age: 30}
fmt.Println(p)

可以使用点符号访问 struct 字段:

1
2
p.age++
fmt.Println(p.age)

主题:指针的介绍

指针是对内存位置的地址。它在 Go 中是一个非常有用的特性,如果使用得当。

以下是一个简单的指针示例:

1
2
3
4
5
i := 7 // declare an int variable i
p := &i // point to i
fmt.Println(*p) // read i through the pointer
*p = 21 // set i through the pointer
fmt.Println(i) // see the new value of i

请花一些时间 internalize 这个概念。指针可以很棘手!

English post: https://programmerscareer.com/go-basic-02/
作者:Wesley Wei – Twitter Wesley Wei – Medium
注意:本文为作者原创,转载请注明出处。

Go基础:理解For, If Else, Switch, Functions, Range, 闭包, 递归 Go基础:理解Go中的数据类型,值,常量,变量和作用域

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×