当前位置:网站首页>兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
2022-08-08 20:02:00 【InfoQ】
数组
package main
import "fmt"
func main() {
// 声明时没有指定数组元素的值, 默认为零值
var arr [5]int
fmt.Println(arr)
arr[0] = 1
arr[1] = 2
arr[2] = 3
fmt.Println(arr)
}
[0 0 0 0 0]
[1 2 3 0 0]
package main
import "fmt"
func main() {
// 直接在声明时对数组进行初始化
var arr1 = [5]int{15, 20, 25, 30, 35}
fmt.Println(arr1)
// 使用短声明
arr2 := [5]int{15, 20, 25, 30, 35}
fmt.Println(arr2)
// 部分初始化, 未初始化的为零值
arr3 := [5]int{15, 20} // [15 20 0 0 0]
fmt.Println(arr3)
// 可以通过指定索引,方便地对数组某几个元素赋值
arr4 := [5]int{1: 100, 4: 200}
fmt.Println(arr4) // [0 100 0 0 200]
// 直接使用 ... 让编译器为我们计算该数组的长度
arr5 := [...]int{15, 20, 25, 30, 35, 40}
fmt.Println(arr5)
// 定义多维数组
arr := [3][2]string{
{"1", "10"},
{"2", "3"},
{"3", "4"}}
fmt.Println(arr) // [[15 20] [25 22] [25 22]]
//数组取值
fmt.Println(arr[0][0])
}
package main
import "fmt"
func main() {
a := [...]float64{67.7, 89.8, 21, 78}
fmt.Println("length of a is",len(a))
}
package main
import "fmt"
func main() {
a := [...]string{"USA", "China", "India", "Germany", "France"}
b := a // a copy of a is assigned to b
b[0] = "Singapore"
fmt.Println("a is ", a)
fmt.Println("b is ", b)
}
package main
import "fmt"
func test() {
a := [...]float64{67.7, 89.8, 21, 78}
sum := float64(0)
for i, v := range a { //range returns both the index and value
fmt.Printf("%d the element of a is %.2f\n", i, v)
sum += v
}
fmt.Println("\nsum of all elements of a", sum)
}
func main() {
a := [...]float64{67.7, 89.8, 21, 78}
for i := 0; i < len(a); i++ { //looping from 0 to the length of the array
fmt.Printf("%d th element of a is %.2f\n", i, a[i])
}
test()
}
0 th element of a is 67.70
1 th element of a is 89.80
2 th element of a is 21.00
3 th element of a is 78.00
0 the element of a is 67.70
1 the element of a is 89.80
2 the element of a is 21.00
3 the element of a is 78.00
sum of all elements of a 256.5
func arrLength() {
arr := [...]string{"Go语言极简一本通", "Go语言微服务架构核心22讲", "从0到Go语言微服务架构师"}
fmt.Println("数组的长度是:", len(arr)) //数组的长度是: 3
}
切片(Slice)
// 声明整型切片
var numList []int
// 声明一个空切片
var numListEmpty = []int{}
numList := make([]int, 3, 5)
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
var s1 = arr[1:4]
fmt.Println(arr)
fmt.Println(s1)
}
[1 2 3 4 5]
[2 3 4]
package main
import "fmt"
func main() {
s := make([]string, 3, 5)
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 5
}
s := make([]int, 3, 5)
fmt.Println(s[10]) //panic: runtime error: index out of range [10] with length 3
var numList []int
fmt.Println(numList == nil) // true
package main
import "fmt"
func main() {
var arr = [...]int{1, 2, 3}
s := arr[:]
fmt.Println(arr)
fmt.Println(s)
s[0] = 4
fmt.Println(arr)
fmt.Println(s)
}
[1 2 3]
[1 2 3]
[4 2 3]
[4 2 3]
package main
import "fmt"
func main() {
s := []int{1}
fmt.Println(s)
fmt.Println(cap(s))
s = append(s, 2)
fmt.Println(s)
fmt.Println(cap(s))
s = append(s, 3, 4)
fmt.Println(s)
fmt.Println(cap(s))
s = append(s, []int{5, 6}...)
fmt.Println(s)
fmt.Println(cap(s))
}
[1]
1
[1 2]
2
[1 2 3 4]
4
[1 2 3 4 5 6]
8
package main
import "fmt"
func main() {
numList := [][]string{
{"1", "1"},
{"2", "2"},
{"3", "3"},
}
fmt.Println(numList)
}
集合(Map)
package main
import "fmt"
func main() {
// 创建一个键类型为 string 值类型为 int 名为 scores 的 map
scores := make(map[string]int)
steps := make(map[string]string)
fmt.Println(scores)
fmt.Println(steps)
}
package main
import "fmt"
func main() {
var steps2 map[string]string = map[string]string{
"1": "1",
"2": "2",
"3": "3",
}
fmt.Println(steps2)
}
package main
import "fmt"
func main() {
steps3 := map[string]string{
"1": "1",
"2": "2",
"3": "3",
}
fmt.Println(steps3)
}
// 可以使用 `map[key] = value` 向 map 添加元素。
steps3["4"] = "4"
// 若 key 已存在,使用 map[key] = value 可以直接更新对应 key 的 value 值。
steps3["4"] = "第四步"
// 直接使用 map[key] 即可获取对应 key 的 value 值,如果 key不存在,会返回其 value 类型的零值。
fmt.Println(steps3["4"] )
//使用 delete(map, key)可以删除 map 中的对应 key 键值对,如果 key 不存在,delete 函数会静默处理,不会报错。
delete(steps3, "4")
// 如果我们想知道 map 中的某个 key 是否存在,可以使用下面的语法:value, ok := map[key]
v3, ok := steps3["3"]
fmt.Println(ok)
fmt.Println(v3)
v4, ok := steps3["4"]
fmt.Println(ok)
fmt.Println(v4)
// 遍历 map 中所有的元素需要用 for range 循环。
for key, value := range steps3 {
fmt.Printf("key: %s, value: %d\n", key, value)
}
// 使用 len 函数可以获取 map 长度
func createMap() {
//...
fmt.Println(len(steps3)) // 4
}
package main
import "fmt"
func main() {
steps4 := map[string]string{
"1": "1",
"2": "2",
"3": "3",
}
fmt.Println("steps4: ", steps4)
newSteps4 := steps4
newSteps4["1"] = "1.1-222"
newSteps4["2"] = "2.2-222"
newSteps4["3"] = "3.3-222"
fmt.Println("steps4: ", steps4)
fmt.Println("newSteps4: ", newSteps4)
}
steps4: map[1:1 2:2 3:3]
steps4: map[1:1.1-222 2:2.2-222 3:3.3-222]
newSteps4: map[1:1.1-222 2:2.2-222 3:3.3-222]
结语
边栏推荐
- Why Manufacturing Companies Should Deploy Digital Factory Systems
- OpenEuler's Ways to Improve Resource Utilization 02: Effects under Typical Applications
- 黑猫带你学Makefile第8篇:uboot/kernel中的makefile基本语法与流程
- Superman is coming!Flutter realizes full-screen power animation!
- openEuler 资源利用率提升之道02:典型应用下的效果
- Mei cole studio OpenHarmony equipment development training notes - the first learn notes
- 大学生图书馆网页设计模板代码 DIV布局书店网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品
- 黑猫带你学Makefile第6篇:Makefile重要规则
- Codeforces Round #721 (Div. 2)
- leveldb-impl:level0
猜你喜欢
JMeter测试接口并发场景
学习与尝试 --> 事件风暴
openEuler 资源利用率提升之道02:典型应用下的效果
软考中级网络工程师全面学习笔记第2版(5万字)+配套视频及课件
Word清除格式在哪里?Word清除格式使用方法
工程 (六) ——PointNet点云分类
golang流程控制:if分支、switch分支和fallthrough switch穿透
Superman is coming!Flutter realizes full-screen power animation!
面试面到自闭,字节软件测试岗五轮面试,四个小时灵魂拷问...
What are the role of document management system for companies?
随机推荐
商品期货需要多少钱开户。有资金门槛吗?期货开户在哪开安全?
PyTorch入门:(五)模型的搭建
Categorized input and output, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, go lang basic data types and input and output EP03
挖财学堂帮开通的证券账户是真的吗?安全吗
梅科尔工作室OpenHarmony设备开发培训笔记-第一章学习笔记
Salesforce开发之 如何实现DML操作时,当前用户跳过验证规则(Validation Rule)
软考中级网络工程师全面学习笔记第2版(5万字)+配套视频及课件
LeetCode_2_两数相加
Qt界面优化:Qt窗体控件设置
学习与尝试 --> 事件风暴
阿里财报中的饿了么:守正出奇
Codeforces Round #721 (Div. 2)
n个数取出r个数排列
PyTorch入门:(一)数据加载
黑猫带你学Makefile第4篇:Makefile中变量的使用
黑猫带你学Makefile第1篇:什么是Makefile
JSP第二篇 -----JSP浅聊EL表达式第二篇:EL表达式中的运算符
iMeta | 深圳先进院戴磊组开发可同时提取共存菌株的组成和基因成分谱的菌株分析工具...
leveldb-impl:level0
大学生图书馆网页设计模板代码 DIV布局书店网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品