在 go 的世界中,没有 array 这个 keyword ,只有 slice 跟 map
map 有 key / value 的概念
先来说说 slice
之前我们遇到的变数皆为独特的、单一的,当想要操作多个类似结构的资料时,在 computer science 中,可以用集合来操作多个同一类型的结构,也可以透过 loop 来处理重复性的工作。
可以把 slice 想像成一排药盒,每个格子中储存一个资料。slice 的限制在於『只能储存同一种类型』的资料,而且建立後长度不能改变。
宣告一个长度为 4 ,属性为 string 的 slice
func main() {
var langs [4]string
langs[0] = "Go"
langs[1] = "GoWorker"
langs[2] = "GoHttp"
langs[3] = "GoServer"
fmt.Println(langs)
}
slice 的 index 是从 0 开始,而非从 1 开始
或者 ... 可以用语法糖的方式同时宣告&赋值
func main() {
langs := [4]string{
"Go",
"GoWorker",
"GoHttp",
"GoServer",
}
fmt.Println(langs)
}
遍历 for range
Go 的 for 回圈可以使用 for range 扫过所有元素。
func main() {
langs := [4]string{
"Go",
"GoWorker",
"GoHttp",
"GoServer",
}
for k, v := range langs {
fmt.Println(fmt.Sprintf("%d: %s", k, v))
}
}
如果不需要 index ,可以使用底线 _ 代替:
for _, v := range langs {
fmt.Println(e)
}
使用 for k,v := range 时,直接修改 v 的值是没有效果的
for _, e := range arr {
e = e * e
}
// nothing happened
for _, e := range arr {
fmt.Println(e)
}
把『要修改得值』 塞到指定的位置 才能做到改动
arr := [5]int{1, 2, 3, 4, 5}
for i := 0; i < len(arr); i++ {
arr[i] = arr[i] * arr[i]
}
for _, e := range arr {
fmt.Println(e)
}
>>: Day08 SwiftUI 01 - Life Cycle : UIKit App Delegate
在撰写Python专案时,时常会遇到需要不同Python版本以及不同版本的Package的问题。建立...
NIST SP 800-53 R4是一个指南,在附录D 安全控制基线–摘要中提供了安全控制基线。它还...
这是我一边学习一边写下的笔记,如果内容有错,恳请在下方留言跟我说,我会非常感谢的!!! 基本运算 一...
什麽是特徵 根据官网的解释就是 特徵会告诉编译器特定型别与其他型别共享的功能。可以使用特徵定义来抽象...
昨天已经把 LineBot 设定好了,今天要做一些简单的指令,包含一图文选单,做完之後大概如下图: ...