1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      go語言變長(zhǎng)數(shù)組 go的數(shù)組

      go語言中數(shù)組使用的注意事項(xiàng)和細(xì)節(jié)

      1、數(shù)組是多個(gè) 相同類型 的數(shù)據(jù)的組合,一個(gè)數(shù)組一旦聲明/定義了,其 長(zhǎng)度是固定的,不能動(dòng)態(tài)變化 。

      創(chuàng)新互聯(lián)建站是一家專業(yè)提供土默特左旗企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為土默特左旗眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

      2、var arr []int? ? 這時(shí)arr就是一個(gè)slice 切片 。

      3、數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括值類型和引用類型,但是 不能混用 。

      4、數(shù)組創(chuàng)建后,如果沒有賦值,有默認(rèn)值如下:

      ? ? 數(shù)值類型數(shù)組:????默認(rèn)值為 0

      ? ? 字符串?dāng)?shù)組:? ? ? ?默認(rèn)值為 ""

      ? ? bool數(shù)組:? ? ? ? ? ?默認(rèn)值為 false

      5、使用數(shù)組的步驟:

      ? ? (1)聲明數(shù)組并開辟空間

      ? ? (3)給數(shù)組各個(gè)元素賦值

      ? ? (3)使用數(shù)組

      6、數(shù)組的下標(biāo)是從0開始的。

      7、數(shù)組下標(biāo)必須在指定范圍內(nèi)使用,否則報(bào)panic:數(shù)組越界,比如var arr [5]int的有效下標(biāo)為0~4.

      8、Go的數(shù)組屬于 值類型 ,在默認(rèn)情況下是 值傳遞 ,因此會(huì)進(jìn)行值拷貝。 數(shù)組間不會(huì)相互影響。

      9、如想在其他函數(shù)中去修改原來的數(shù)組,可以使用 引用傳遞 (指針方式)。

      10、長(zhǎng)度是數(shù)組類型的一部分,在傳遞函數(shù)參數(shù)時(shí),需要考慮數(shù)組的長(zhǎng)度,看以下案例:

      題1:編譯錯(cuò)誤,因?yàn)椴荒馨裑3]int類型傳遞給[]int類型,前者是數(shù)組,后者是切片;

      題2:編譯錯(cuò)誤,因?yàn)椴荒馨裑3]int類型傳遞給[4]int類型;

      題3:編譯正確,因?yàn)閇3]int類型傳給[3]int類型合法。

      go語言數(shù)組,切片和字典的區(qū)別和聯(lián)系

      、數(shù)組 

      與其他大多數(shù)語言類似,Go語言的數(shù)組也是一個(gè)元素類型相同的定長(zhǎng)的序列。

      (1)數(shù)組的創(chuàng)建。

      數(shù)組有3種創(chuàng)建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下:

      復(fù)制代碼代碼如下:

      func test5() {

      var iarray1 [5]int32

      var iarray2 [5]int32 = [5]int32{1, 2, 3, 4, 5}

      iarray3 := [5]int32{1, 2, 3, 4, 5}

      iarray4 := [5]int32{6, 7, 8, 9, 10}

      iarray5 := [...]int32{11, 12, 13, 14, 15}

      iarray6 := [4][4]int32{{1}, {1, 2}, {1, 2, 3}}

      fmt.Println(iarray1)

      fmt.Println(iarray2)

      fmt.Println(iarray3)

      fmt.Println(iarray4)

      fmt.Println(iarray5)

      fmt.Println(iarray6)

      }

      結(jié)果:

      [0 0 0 0 0]

      [1 2 3 4 5]

      [1 2 3 4 5]

      [6 7 8 9 10]

      [11 12 13 14 15]

      [[1 0 0 0] [1 2 0 0] [1 2 3 0] [0 0 0 0]]

      我們看數(shù)組 iarray1,只聲明,并未賦值,Go語言幫我們自動(dòng)賦值為0。再看 iarray2 和 iarray3 ,我們可以看到,Go語言的聲明,可以表明類型,也可以不表明類型,var iarray3 = [5]int32{1, 2, 3, 4, 5} 也是完全沒問題的。

      (2)數(shù)組的容量和長(zhǎng)度是一樣的。cap() 函數(shù)和 len() 函數(shù)均輸出數(shù)組的容量(即長(zhǎng)度)。如:

      復(fù)制代碼代碼如下:

      func test6() {

      iarray4 := [5]int32{6, 7, 8, 9, 10}

      fmt.Println(len(iarray4))

      fmt.Println(cap(iarray4))

      }

      輸出都是5。

      (3)使用:

      復(fù)制代碼代碼如下:

      func test7() {

      iarray7 := [5]string{"aaa", `bb`, "可以啦", "叫我說什么好", "()"}

      fmt.Println(iarray7)

      for i := range iarray7 {

      fmt.Println(iarray7[i])

      }

      }

      二、切片

      Go語言中,切片是長(zhǎng)度可變、容量固定的相同的元素序列。Go語言的切片本質(zhì)是一個(gè)數(shù)組。容量固定是因?yàn)閿?shù)組的長(zhǎng)度是固定的,切片的容量即隱藏?cái)?shù)組的長(zhǎng)度。長(zhǎng)度可變指的是在數(shù)組長(zhǎng)度的范圍內(nèi)可變。

      (1)切片的創(chuàng)建。

      切片的創(chuàng)建有4種方式:

      1)make ( []Type ,length, capacity )

      2) make ( []Type, length)

      3) []Type{}

      4) []Type{value1 , value2 , ... , valueN }

      從3)、4)可見,創(chuàng)建切片跟創(chuàng)建數(shù)組唯一的區(qū)別在于 Type 前的“ [] ”中是否有數(shù)字,為空,則代表切片,否則則代表數(shù)組。因?yàn)榍衅情L(zhǎng)度可變的。如下是創(chuàng)建切片的示例:

      復(fù)制代碼代碼如下:

      func test8() {

      slice1 := make([]int32, 5, 8)

      slice2 := make([]int32, 9)

      slice3 := []int32{}

      slice4 := []int32{1, 2, 3, 4, 5}

      fmt.Println(slice1)

      fmt.Println(slice2)

      fmt.Println(slice3)

      fmt.Println(slice4)

      }

      輸出為:

      [0 0 0 0 0]

      [0 0 0 0 0 0 0 0 0]

      []

      [1 2 3 4 5]

      如上,創(chuàng)造了4個(gè)切片,3個(gè)空切片,一個(gè)有值的切片。

      (2)切片與隱藏?cái)?shù)組:

      一個(gè)切片是一個(gè)隱藏?cái)?shù)組的引用,并且對(duì)于該切片的切片也引用同一個(gè)數(shù)組。如下示例,創(chuàng)建了一個(gè)切片slice0,并根據(jù)這個(gè)切片創(chuàng)建了2個(gè)切片 slice1 和 slice2:

      復(fù)制代碼代碼如下:

      func test9() {

      slice0 := []string{"a", "b", "c", "d", "e"}

      slice1 := slice0[2 : len(slice0)-1]

      slice2 := slice0[:3]

      fmt.Println(slice0, slice1, slice2)

      slice2[2] = "8"

      fmt.Println(slice0, slice1, slice2)

      }

      輸出為:

      [a b c d e] [c d] [a b c]

      [a b 8 d e] [8 d] [a b 8]

      可見,切片slice0 、 slice1 和 slice2是同一個(gè)底層數(shù)組的引用,所以slice2改變了,其他兩個(gè)都會(huì)變。

      (3)遍歷、修改切片:

      復(fù)制代碼代碼如下:

      func test10() {

      slice0 := []string{"a", "b", "c", "d", "e"}

      fmt.Println("\n~~~~~~元素遍歷~~~~~~")

      for _, ele := range slice0 {

      fmt.Print(ele, " ")

      ele = "7"

      }

      fmt.Println("\n~~~~~~索引遍歷~~~~~~")

      for index := range slice0 {

      fmt.Print(slice0[index], " ")

      }

      fmt.Println("\n~~~~~~元素索引共同使用~~~~~~")

      for index, ele := range slice0 {

      fmt.Print(ele, slice0[index], " ")

      }

      fmt.Println("\n~~~~~~修改~~~~~~")

      for index := range slice0 {

      slice0[index] = "9"

      }

      fmt.Println(slice0)

      }

      如上,前三種循環(huán)使用了不同的for range循環(huán),當(dāng)for后面,range前面有2個(gè)元素時(shí),第一個(gè)元素代表索引,第二個(gè)元素代表元素值,使用 “_” 則表示忽略,因?yàn)間o語言中,未使用的值會(huì)導(dǎo)致編譯錯(cuò)誤。

      只有一個(gè)元素時(shí),該元素代表索引。

      只有用索引才能修改元素。如在第一個(gè)遍歷中,賦值ele為7,結(jié)果沒有作用。因?yàn)樵谠乇闅v中,ele是值傳遞,ele是該切片元素的副本,修改它不會(huì)影響原本值,而在第四個(gè)遍歷——索引遍歷中,修改的是該切片元素引用的值,所以可以修改。

      結(jié)果為:

      ~~~~~~元素遍歷~~~~~~

      a b c d e

      ~~~~~~索引遍歷~~~~~~

      a b c d e

      ~~~~~~元素索引共同使用~~~~~~

      aa bb cc dd ee

      ~~~~~~修改~~~~~~

      [9 9 9 9 9]

      (4)、追加、復(fù)制切片:

      復(fù)制代碼代碼如下:

      func test11() {

      slice := []int32{}

      fmt.Printf("slice的長(zhǎng)度為:%d,slice為:%v\n", len(slice), slice)

      slice = append(slice, 12, 11, 10, 9)

      fmt.Printf("追加后,slice的長(zhǎng)度為:%d,slice為:%v\n", len(slice), slice)

      slicecp := make([]int32, (len(slice)))

      fmt.Printf("slicecp的長(zhǎng)度為:%d,slicecp為:%v\n", len(slicecp), slicecp)

      copy(slicecp, slice)

      fmt.Printf("復(fù)制賦值后,slicecp的長(zhǎng)度為:%d,slicecp為:%v\n", len(slicecp), slicecp)

      }

      追加、復(fù)制切片,用的是內(nèi)置函數(shù)append和copy,copy函數(shù)返回的是最后所復(fù)制的元素的數(shù)量。

      (5)、內(nèi)置函數(shù)append

      內(nèi)置函數(shù)append可以向一個(gè)切片后追加一個(gè)或多個(gè)同類型的其他值。如果追加的元素?cái)?shù)量超過了原切片容量,那么最后返回的是一個(gè)全新數(shù)組中的全新切片。如果沒有超過,那么最后返回的是原數(shù)組中的全新切片。無論如何,append對(duì)原切片無任何影響。如下示例:

      復(fù)制代碼代碼如下:

      func test12() {

      slice := []int32{1, 2, 3, 4, 5, 6}

      slice2 := slice[:2]

      _ = append(slice2, 50, 60, 70, 80, 90)

      fmt.Printf("slice為:%v\n", slice)

      fmt.Printf("操作的切片:%v\n", slice2)

      _ = append(slice2, 50, 60)

      fmt.Printf("slice為:%v\n", slice)

      fmt.Printf("操作的切片:%v\n", slice2)

      }

      如上,append方法用了2次,結(jié)果返回的結(jié)果完全不同,原因是第二次append方法追加的元素?cái)?shù)量沒有超過 slice 的容量。而無論怎樣,原切片slice2都無影響。結(jié)果:

      slice為:[1 2 3 4 5 6]

      操作的切片:[1 2]

      slice為:[1 2 50 60 5 6]

      操作的切片:[1 2]

      go語言:數(shù)組

      數(shù)組是一個(gè)由 固定長(zhǎng)度 的 特定類型元素 組成的序列,一個(gè)數(shù)組可以由零個(gè)或多個(gè)元素組成。 數(shù)組是值類型

      數(shù)組的每個(gè)元素都可以通過索引下標(biāo)來訪問,索引下標(biāo)的范圍是從0開始到數(shù)組長(zhǎng)度減1的位置,內(nèi)置函數(shù) len() 可以返回?cái)?shù)組中元素的個(gè)數(shù)。

      2.類型的打印,結(jié)果的第二種打印方式

      3.對(duì)元素的修改或者賦值

      4.判斷數(shù)組是否相等:長(zhǎng)度、類型

      4.數(shù)組的地址:連續(xù)存儲(chǔ)的空間

      5.數(shù)組的賦值、地址、取值

      6.數(shù)組的默認(rèn)值

      7.數(shù)組的初始化

      8.數(shù)組的逆置

      9.求數(shù)組的最大值、最小值、平均值

      10.對(duì)數(shù)組字符串進(jìn)行連接

      11.冒泡排序法的實(shí)現(xiàn)

      12.數(shù)組做函數(shù)的參數(shù)

      13.二維數(shù)組:賦值和地址

      14.二維數(shù)組:打印和輸出

      15. 指針數(shù)組,每一個(gè)元素都是地址

      17.數(shù)組的內(nèi)存分配


      網(wǎng)站題目:go語言變長(zhǎng)數(shù)組 go的數(shù)組
      本文路徑:http://www.ef60e0e.cn/article/doccshp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        米脂县| 嘉义市| 疏附县| 宿迁市| 云浮市| 调兵山市| 温泉县| 邵武市| 辉县市| 电白县| 青州市| 正阳县| 新建县| 宜君县| 蒲城县| 乐陵市| 手游| 红安县| 珲春市| 河池市| 军事| 双城市| 宣恩县| 万源市| 汉阴县| 绵竹市| 定结县| 兴隆县| 郁南县| 长岛县| 西安市| 望城县| 宁城县| 金塔县| 蚌埠市| 佛坪县| 马公市| 蓬莱市| 鄄城县| 六安市| 浦城县|