最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go切片的copy和view的使用方法

 更新時間:2019年11月26日 09:33:32   作者:pureyb  
這篇文章主要介紹了go切片的copy和view的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

語義理解切片

go 語言中的切片是 go 語言的一個特色,從語義上來說,切片就是把一個整體的東西切分成小的部分,那么對于語言中的切片也是同理。

舉個例子看如下代碼:

package main
import "fmt"
func main() {
 arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7}
 fmt.Println("arr[2:6]:", arr[2:6]) // 從下標(biāo)2到下標(biāo)6
 fmt.Println("arr[:6]:", arr[:6]) // 從下標(biāo)0到下標(biāo)6
 fmt.Println("arr[2:]:", arr[2:]) // 從下標(biāo)2到最后
 fmt.Println("arr[:]:", arr[:]) // 全部
}

輸出結(jié)果為:

arr[2:6]: [2 3 4 5]
arr[:6]: [0 1 2 3 4 5]
arr[2:]: [2 3 4 5 6 7]
arr[:]: [0 1 2 3 4 5 6 7]

這里可以很明確的看出,我們想要 arr 數(shù)組的哪一部分,我們就切哪一部分。

當(dāng)然,如果僅僅知道切片是這么用的當(dāng)然還不夠,我們應(yīng)該更加深入的理解,如:

對原數(shù)組的 copy 還是 view 。

對于 go 語言的數(shù)組,copy 和 view 是同時都存在的。

  • copy 就是使用這個數(shù)組的時候我將這個數(shù)組拷貝一份,這樣對于數(shù)組的增刪改,是不會改變原數(shù)組的值的
  • view 由數(shù)組執(zhí)行切片所返回的對象是一個 view,即視圖,若我們在視圖上操作數(shù)組,會改變原數(shù)組,

copy 場景

package main

import (
 "fmt"
)

func updateArr(arr [5]int) {
 arr[0] = 100
 fmt.Println("修改后的arr:", arr)
}

func main() {
 arr3 := [...]int{2, 4, 5, 6, 7}
 fmt.Println("原來的:", arr3)
 updateArr(arr3)
 fmt.Println("再次查看原始的:", arr3)
}

輸出結(jié)果:

原來的: [2 4 5 6 7]
修改后的arr: [100 4 5 6 7]
再次查看原始的: [2 4 5 6 7]

如上代碼可以看到,我們在 updateArr 里面修改了下標(biāo)為 0 的值,但是我們輸出原始數(shù)組的時候,并沒有變。這就是對數(shù)組 copy。

view 場景

func updateArr(arr []int) {
 arr[0] = 100
 fmt.Println("修改后的arr:", arr)
}

func main() {
 arr3 := [...]int{2, 4, 5, 6, 7}
 fmt.Println("原來的:", arr3)
 // 使用切片
 updateArr(arr3[:])
 fmt.Println("再次查看原始的:", arr3)
}

輸出結(jié)果:

原來的: [2 4 5 6 7]
修改后的arr: [100 4 5 6 7]
再次查看原始的: [100 4 5 6 7]

為什么 view 能夠改變原數(shù)組

雖然 Slice 本身是值類型,但是它內(nèi)部使用了對數(shù)組的指針引用,所以修改切片數(shù)據(jù),會將數(shù)組原有數(shù)據(jù)修改掉。

當(dāng)然,在理解上面的同時,一定要知道 go 是如何定義一個切片的

var b []int

所以,在 updateArr 這個函數(shù)傳參的時候 arr []int 是傳切片進(jìn)去。不然會報錯。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go高級特性探究之優(yōu)先級隊列詳解

    Go高級特性探究之優(yōu)先級隊列詳解

    Heap?是一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)常用于實現(xiàn)優(yōu)先隊列,這篇文章主要就是來和大家深入探討一下GO語言中的優(yōu)先級隊列,感興趣的可以了解一下
    2023-06-06
  • go?smtp實現(xiàn)郵件發(fā)送示例詳解

    go?smtp實現(xiàn)郵件發(fā)送示例詳解

    這篇文章主要為大家介紹了go?smtp實現(xiàn)郵件發(fā)送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 從零封裝Gin框架實現(xiàn)數(shù)據(jù)庫初始化GORM

    從零封裝Gin框架實現(xiàn)數(shù)據(jù)庫初始化GORM

    這篇文章主要為大家介紹了從零封裝Gin框架實現(xiàn)數(shù)據(jù)庫初始化GORM,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 詳解以go思想去處理js異常拋棄trycatch

    詳解以go思想去處理js異常拋棄trycatch

    這篇文章主要為大家介紹了詳解以go思想去處理js異常拋棄trycatch,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Golang嵌入資源文件實現(xiàn)步驟詳解

    Golang嵌入資源文件實現(xiàn)步驟詳解

    在應(yīng)用程序中附帶代碼以外的其他資源可能會很有用,常用的實現(xiàn)方法是嵌入對象或數(shù)據(jù)。在數(shù)據(jù)庫中存儲數(shù)據(jù)應(yīng)用中,需要定義schema,在應(yīng)用啟動時創(chuàng)建表,但如果找不到schema文件呢?Go1.16提供embed包讓實現(xiàn)變得簡單,之前很多第三方包實現(xiàn)類似功能
    2023-01-01
  • Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法

    Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法

    這篇文章主要介紹了Go語言實現(xiàn)的簡單網(wǎng)絡(luò)端口掃描方法,實例分析了Go語言網(wǎng)絡(luò)程序的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie

    go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie

    這篇文章主要介紹了go語言數(shù)據(jù)結(jié)構(gòu)之前綴樹Trie,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定得參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    插入排序是一種簡單的排序算法。這篇文章將利用Go語言實現(xiàn)冒泡排序算法,文中的示例代碼講解詳細(xì),對學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-12-12
  • golang搭建靜態(tài)web服務(wù)器的實現(xiàn)方法

    golang搭建靜態(tài)web服務(wù)器的實現(xiàn)方法

    這篇文章主要介紹了golang搭建靜態(tài)web服務(wù)器的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • GO excelize讀取excel進(jìn)行時間類型轉(zhuǎn)換的示例代碼(自動轉(zhuǎn)換)

    GO excelize讀取excel進(jìn)行時間類型轉(zhuǎn)換的示例代碼(自動轉(zhuǎn)換)

    我們經(jīng)常會遇到如何自動識別excel中的時間類型數(shù)據(jù)并轉(zhuǎn)化成對應(yīng)的 "Y-m-d H:i:s"類型數(shù)據(jù),本文小編給大家介紹了GO excelize讀取excel進(jìn)行時間類型轉(zhuǎn)換的示例代碼(自動轉(zhuǎn)換),需要的朋友可以參考下
    2024-10-10

最新評論

乐山市| 蓝山县| 苍南县| 察隅县| 河间市| 台安县| 沧州市| 石泉县| 柯坪县| 疏附县| 晋宁县| 中山市| 宁明县| 安乡县| 永和县| 万山特区| 辽阳县| 张掖市| 湄潭县| 嘉禾县| 阳新县| 廊坊市| 濮阳市| 和田市| 洪湖市| 英吉沙县| 临夏市| 仁化县| 中卫市| 仙桃市| 会宁县| 靖西县| 闽侯县| 临夏市| 昌黎县| 敦化市| 金塔县| 正定县| 金寨县| 西畴县| 庆安县|