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

Golang?range?slice?與range?array?之間的區(qū)別

 更新時間:2022年07月15日 09:14:20   作者:??凡森Zfans???  
這篇文章主要介紹了Golang?range?slice?與range?array?之間的區(qū)別,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

結構圖:

為什么?

var data [][]int

for _, rangeSlice := range [][]int{{1}, {2}, {3}} {
   data = append(data, rangeSlice[:])
}

fmt.Printf("%v", data) // 輸出 [[1] [2] [3]]
var data [][]int

for _, rangeArray := range [][1]int{{1}, {2}, {3}} {
   data = append(data, rangeArray[:])
}
fmt.Printf("%v", data) // 輸出 [[3] [3] [3]]

理解

for key, value := range container{
   // loop
}

在 for range 語法中,value 是 for range 循環(huán)返回元素的值的拷貝。

case rangeSlice

var data [][]int

for _, rangeSlice := range [][]int{{1}, {2}, {3}} {
   data = append(data, rangeSlice[:])
}
fmt.Printf("%v", data) // 輸出 [[1] [2] [3]]

代碼中,rangeSlice 是切片 []int{1} or []int{2} or []int{3} 的一個拷貝,底層是數(shù)組 [1]int{1} or [1]int{2} or [1]int{3},所以在 rangeSlice 的切片 append 到 data 后,data 的元素也是這幾個底層數(shù)組的切片,所以上述代碼片段的輸出為 [[1] [2] [3]]

case rangeArray

var data [][]int

for _, rangeArray := range [][1]int{{1}, {2}, {3}} {
   data = append(data, rangeArray[:])
}
fmt.Printf("%v", data) // 輸出 [[3] [3] [3]]

代碼中,rangeArray 是數(shù)組 [1]int{1} or [1]int{2} or [1]int{3} 的一個拷貝,在每次循環(huán)中,rangeArray 用的都是同一個數(shù)組內存空間,所以在 rangeArray 這個數(shù)組的切片 append 到 data 后,data 的元素都是指向同一底層數(shù)組的切片,在循環(huán)的最后一輪 rangeArray 為 [1]int{3},所以上述代碼片段的輸出為 [[3] [3] [3]]

測試代碼

package main

import "fmt"
func rangeSlice() {
   source := [][]int{{1}, {2}, {3}}
   var data [][]int
   for idx, rangeSlice := range source {
      fmt.Printf("%T %p   %T %p", rangeSlice, rangeSlice, source[idx], source[idx])
      fmt.Printf("   append slice %p\n", rangeSlice[:])
      data = append(data, rangeSlice[:])
   }
   fmt.Printf("data: %v\n", data)
}
func rangeArray() {
   source := [][1]int{{1}, {2}, {3}}
   var data [][]int

   for idx, rangeArray := range source {
      fmt.Printf("%T %p   %T %p", rangeArray, &rangeArray, source[idx], &source[idx])
      fmt.Printf("   append slice %p\n", rangeArray[:])
      data = append(data, rangeArray[:])
   }
   fmt.Printf("data: %v\n", data)
}
func main() {
   rangeSlice()
   rangeArray()
}
// 輸出:
// []int 0xc00001a0a8   []int 0xc00001a0a8   append slice 0xc00001a0a8
// []int 0xc00001a0b0   []int 0xc00001a0b0   append slice 0xc00001a0b0
// []int 0xc00001a0b8   []int 0xc00001a0b8   append slice 0xc00001a0b8
// data: [[1] [2] [3]]
// [1]int 0xc00001a0e0   [1]int 0xc0000160f0   append slice 0xc00001a0e0
// [1]int 0xc00001a0e0   [1]int 0xc0000160f8   append slice 0xc00001a0e0
// [1]int 0xc00001a0e0   [1]int 0xc000016100   append slice 0xc00001a0e0
// data: [[3] [3] [3]]

到此這篇關于Golang range slice 與range array 之間的區(qū)別的文章就介紹到這了,更多相關Golang range slice 與 range array 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • golang的序列化與反序列化的幾種方式

    golang的序列化與反序列化的幾種方式

    這篇文章主要介紹了golang的序列化與反序列化的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Golang中處理import自定義包出錯問題的解決辦法

    Golang中處理import自定義包出錯問題的解決辦法

    最近開始使用Go/GoLand在import自定義包時出現(xiàn)各種狀況,下面這篇文章主要給大家介紹了關于Golang中處理import自定義包出錯問題的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • Go語言實現(xiàn)二分查找方法示例

    Go語言實現(xiàn)二分查找方法示例

    這篇文章主要為大家介紹了Go語言實現(xiàn)二分查找方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Go語言defer與return執(zhí)行的先后順序詳解

    Go語言defer與return執(zhí)行的先后順序詳解

    這篇文章主要為大家介紹了Go語言defer與return執(zhí)行的先后順序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 快速掌握Go 語言 HTTP 標準庫的實現(xiàn)方法

    快速掌握Go 語言 HTTP 標準庫的實現(xiàn)方法

    基于HTTP構建的服務標準模型包括兩個端,客戶端(Client)和服務端(Server),這篇文章主要介紹了Go 語言HTTP標準庫的實現(xiàn)方法,需要的朋友可以參考下
    2022-07-07
  • Go語言中內存泄漏的常見案例與解決方法

    Go語言中內存泄漏的常見案例與解決方法

    Go雖然是自動GC類型的語言,但在編碼過程中如果不注意,很容易造成內存泄漏的問題,本文為大家整理了一些內存泄漏的常見Case與解決方法,希望對大家有所幫助
    2024-03-03
  • Go語言中字符串賦值中的問題與解決方法

    Go語言中字符串賦值中的問題與解決方法

    這篇文章主要為大家詳細介紹了Go語言中字符串賦值會出現(xiàn)的一些問題以及解決方法,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2024-12-12
  • go?defer避坑指南之拆解延遲語句

    go?defer避坑指南之拆解延遲語句

    這篇文章主要為大家詳細介紹了go?defer避坑指南之如何拆解延遲語句,掌握正確使用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Golang讀寫二進制文件方法總結

    Golang讀寫二進制文件方法總結

    使用?Golang?的?encoding/gob?包讀寫二進制文件非常方便,而且代碼量也非常少,本文就來通過兩個示例帶大家了解一下encoding/gob的具體用法吧
    2023-05-05
  • 深入理解 Go 語言中的 Context

    深入理解 Go 語言中的 Context

    這篇文章主要介紹了 理解 Go 語言中的 Context,需要的朋友可以參考下
    2020-06-06

最新評論

阳春市| 乾安县| 汕头市| 皮山县| 水城县| 佳木斯市| 邻水| 开封市| 台东县| 合山市| 长治县| 寿宁县| 昭苏县| 枝江市| 巧家县| 瑞金市| 伊通| 吉安县| 迭部县| 鱼台县| 凉城县| 昌乐县| 罗定市| 萨嘎县| 长春市| 浦江县| 唐河县| 邵阳县| 衡东县| 达州市| 冕宁县| 郁南县| 安乡县| 庐江县| 信阳市| 龙海市| 儋州市| 黄石市| 潜山县| 昔阳县| 本溪市|