array,slice,map,struct使用

array使用

  1. 聲明
var a [5]string
  1. 賦值
    在已經聲明前提下
a[0] = "string"
  1. 聲明+賦值
a := [3]int{1, 2}                 // 未初始化元素值爲 0。
b := [...]int{1, 2, 3, 4}         // 經過初始化值肯定數組長度。
c := [5]int{2: 100, 4:200}   // 使⽤用索引號初始化元素。
d := [...]struct { 
    name string
    age uint8
}{
    {"user1", 10},
    {"user2", 20}, 
}

slice使用

  1. 聲明
//1 顯示聲明
var slice []map[string]string
var slice []string
//2 來自數組類型
a := [...]int{1, 2, 3, 4}  
var slice []type = a[start:end]
//當相關數組尚未定義時,咱們可使用 make() 函數來建立一個切片 同時建立好相關數組
var slice []type = make([]type, len)
  1. 賦值
//1
slice[0]= 1
//2 append附加
slice = append(slice, "1")
  1. 聲明+賦值
data := [...]int{0, 1, 2, 3, 4, 5}
s := data[2:4]
s[0] = 100
s[1] = 200
//可直接建立 slice 對象,⾃自動分配底層數組
s1 := []int{0, 1, 2, 3, 8: 100}  //經過初始化表達式構造,可以使⽤用索引號。
s2 := make([]int, 6, 8)         // 使⽤用 make 建立,指定 len 和 cap 值。
s3 := make([]int, 6)             // 省略 cap,至關於 cap = len。
s4 := []int{}                      //等於 make([]int, 0),須要用append增長:s4 = append(s4, 1)

屬性 len 表⽰示可⽤用元素數量,讀寫操做不能超過該限制
屬性 cap 表⽰示最⼤擴張容量,不能超出數組限制
在大批量添加數據時,建議⼀次性分配足夠大的空間,以減小內存分配和數據複製開銷
使用append能夠作到無容量限制數組

//一個沒有容量限制的slice
a := []int{}  //等同 make([]string, 0)
//而後能夠無限append
a = append(a, 1)
a = append(a, 2)
a = append(a, ...)

map使用

  1. 聲明
var m map[string]string
  1. 賦值 在已經有了聲明前提下
//1
m = map[string]string{"one": "1", "two": "2"}
//2
m = make(map[string]string)
m["one"] = "1"
  1. 聲明+賦值
//1
m := map[string]string{"one": "1", "two": "2"}
//2
m := map[string]string{}
m["one"] = "1"

struct使用

  1. 聲明
//1 顯示聲明
type Node struct { 
     _ int
     id int
     data *byte
     next *Node
}
var n Node
//2 匿名struct,可用做結構成員或定義變量
//結構成員中使用匿名
type File struct {
    name string
    attr struct {
        perm int
        owner int
    }
}
//定義變量使用匿名
var n struct {
    perm int
    owner int
}
  1. 賦值
    在已經有了聲明前提下
type User struct {
    name string
    age int
}
var u1 User
func main() {
    u1.name = "Tom"
}
  1. 聲明+賦值
//當type是顯式聲明的狀況下======================
type User struct {
    name string
    age int
}
//變量聲明+賦值
//1 成員名稱+值
u1 := User {
    name: "Tom"
    age: 20
}
//2 已經定義變量的狀況下
var u1 User
#2.1
u1.name = "Tom"
#2.2
u1 = User {
    "Tom",
    "20"
}
//2.3
u1 = User {
    name: "Tom",
    age: "20"
}
//3 未定義變量的狀況下和第2種同樣寫法,不一樣的是用 :=
u1 := User {
    "Tom",
    "20"
}
//4
//當變量採用匿名聲明狀況下======================
var attr = struct {
    perm int
    owner int
}{2, 0755}
  1. 檢測成員是否存在 https://stackoverflow.com/a/53697284
相關文章
相關標籤/搜索