欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析Go語言中數(shù)組的這些細(xì)節(jié)

 更新時(shí)間:2022年11月23日 17:08:34   作者:掘金小逆  
這篇文章主要為大家詳細(xì)介紹了Go語言中數(shù)組一些細(xì)節(jié)的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語言有一定的幫助,需要的可以了解一下

Go語言基礎(chǔ)二

len&cap

書接上文,我們提到二維數(shù)組中的第二個(gè)維度的數(shù)組不能用...來表示,接下來我們要認(rèn)識(shí)兩個(gè)新的函數(shù),它們分別是lencap

package main
?
func main() {
    a := [2]int{}
    println(len(a), cap(a)) 
}

由上方代碼可知,我們?cè)?strong>main函數(shù)里面定義了一個(gè)a數(shù)組,長(zhǎng)度為2,未進(jìn)行初始化變量等賦值操作,所以數(shù)組元素均為0;調(diào)用打印函數(shù)輸出的是數(shù)組a的lengthcap值,這里運(yùn)行結(jié)果均為2

二維數(shù)組的遍歷

接下來我們重點(diǎn)講一下二維數(shù)組的遍歷,有些小伙伴可能就要問了:我沒學(xué)過什么遍歷循環(huán)啊,這讓我怎么理解?

別急,咱們看代碼主要看的是一個(gè)思路過程~

package main
import (
    "fmt"
)
func main() {
    var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
    for k1, v1 := range f {
        for k2, v2 := range v1 {
            fmt.Printf("(%d,%d)=%d ", k1, k2, v2)
        }
        fmt.Println()
    }
}

首先我們可以看到在main函數(shù)里面定義了一個(gè)int類型,名叫f的數(shù)組,它的屬性為2行3列,第一行存儲(chǔ)的是 {1,2,3} ,第二行存儲(chǔ)的是 {7,8,9} ,我們通過for循環(huán)對(duì)二維數(shù)組進(jìn)行一次遍歷,讀者暫時(shí)可以把它理解成一個(gè)循環(huán)的固定格式,后續(xù)循環(huán)會(huì)為讀者一一介紹,由于本次數(shù)組是二維數(shù)組,所以我們需要調(diào)用兩次for循環(huán)來對(duì)數(shù)組進(jìn)行遍歷,通過函數(shù)打印輸出所需要的值

數(shù)組的拷貝與傳參

package main
import "fmt"
func printArr(arr *[5]int) {
    arr[0] = 10
    for i, v := range arr {
        fmt.Println(i, v)
    }
}
func main() {
    var arr1 [5]int
    printArr(&arr1)
    fmt.Println(arr1)
    arr2 := [...]int{2, 4, 6, 8, 10}
    printArr(&arr2)
    fmt.Println(arr2)
}

首先我們可以看到定義了一個(gè)printArr方法,并在方法里面內(nèi)置了一個(gè)長(zhǎng)度為5、int類型的數(shù)組。緊接著我們將數(shù)組的第一個(gè)元素賦值為10,緊接著對(duì)數(shù)組進(jìn)行循環(huán)遍歷,分別輸出數(shù)組的索引及索引位置上的值

回到main方法中,我們定義了一個(gè)名叫arr1,長(zhǎng)度為5,int類型的數(shù)組,并直接打印該數(shù)組的地址值,同時(shí)調(diào)用函數(shù)打印出該數(shù)組未進(jìn)行初始化時(shí)候的值,顯而易見的是,由于我們?cè)趐rintArr中已經(jīng)對(duì)索引位置為1的數(shù)組的值進(jìn)行了一次修改,所以本次打印輸出數(shù)組的時(shí)候,也會(huì)受到上一次數(shù)組的影響,所以本次數(shù)組打印輸出的結(jié)果為[10 0 0 0 0]。緊接著,我們定義了一個(gè)名叫arr2,長(zhǎng)度為任意,int類型的數(shù)組,同時(shí)給予賦值操作,但是由于在printArr索引為1的數(shù)組的位置的值已經(jīng)發(fā)生了改變,所以本次arr2數(shù)組打印輸出的結(jié)果為[10 4 6 8 10]

求數(shù)組所有元素之和

package main
import (
    "fmt"
    "math/rand"
    "time"
)
func sumArr(a [10]int) int {
    var sum int = 0
    for i := 0; i < len(a); i++ {
        sum += a[i]
    }
    return sum
}
func main() {
    rand.Seed(time.Now().Unix())
    var b [10]int
    for i := 0; i < len(b); i++ {
        b[i] = rand.Intn(1000)
    }
    sum := sumArr(b)
    fmt.Printf("sum=%d\n", sum)
}

我們首先定義了一個(gè)方法名叫sumArr,同時(shí)往該方法里面?zhèn)魅?strong>一個(gè)名為a,長(zhǎng)度為10,數(shù)據(jù)類型為int類型的數(shù)組。在本方法里面,我們定義一個(gè)變量為sum,使用for循環(huán)來對(duì)數(shù)組進(jìn)行遍歷操作,同時(shí)使用sum來記錄該數(shù)組各元素的和,最終返回sum的值

緊接著我們看到main方法,我們?cè)谠摲椒ㄖ惺褂?code>rand.seed()函數(shù)來定義一個(gè)隨機(jī)數(shù),同時(shí)初始化一個(gè)名為b,長(zhǎng)度為10,數(shù)據(jù)類型為int類型的數(shù)組使用for循環(huán)對(duì)該數(shù)組進(jìn)行遍歷,同時(shí)將隨機(jī)數(shù)的值賦給b數(shù)組中元素。最終我們將數(shù)組sumArr中b的值賦給sum,調(diào)用函數(shù)進(jìn)行打印輸出sum的值

例題:數(shù)組元素匹配問題

找出數(shù)組中和為給定值的兩個(gè)元素的下標(biāo),例如數(shù)組[1,3,5,8,7],

找出兩個(gè)元素之和等于8的下標(biāo)分別是(0,4)和(1,2)

求元素和,是給定的值

package main
import "fmt"
func myTest(a [5]int, target int) {
    // 遍歷數(shù)組
    for i := 0; i < len(a); i++ {
        other := target - a[i]
        // 繼續(xù)遍歷
        for j := i + 1; j < len(a); j++ {
            if a[j] == other {
                fmt.Printf("(%d,%d)\n", i, j)
            }
        }
    }
}
func main() {
    b := [5]int{1, 3, 5, 8, 7}
    myTest(b, 8)
}

根據(jù)題意,我們可以得知,在myTest方法里面我們定義了一個(gè)名為a,長(zhǎng)度為5,數(shù)據(jù)類型為int類型的數(shù)組,同時(shí)還定義了一個(gè)目標(biāo)值target用于檢驗(yàn)元素和是否正確。

緊接著我們對(duì)該數(shù)組進(jìn)行遍歷,定義other變量用于表示另一個(gè)數(shù)組元素,這里進(jìn)行二次遍歷的原因是因?yàn)楸緱l題目需要匹配數(shù)組中兩個(gè)元素的值,因此進(jìn)行二次遍歷匹配數(shù)組中i的值,一旦與other匹配上,即打印輸出該數(shù)組的值(兩個(gè)元素)

我們?cè)?code>main函數(shù)中對(duì)數(shù)組b進(jìn)行變量初始化的賦值操作,以便進(jìn)行方法的調(diào)用,如果在數(shù)組中能夠找到myTest()方法中的第二個(gè),即target元素,就打印輸出這兩個(gè)元素,反之則什么都不打印

今日總結(jié)

今天我們主要學(xué)習(xí)了Go語言二維數(shù)組和遍歷數(shù)組中的一些應(yīng)用。如遍歷數(shù)組的一個(gè)固定格式,亦或是數(shù)組的拷貝與傳參,這些都值得讀者去仔細(xì)推敲

到此這篇關(guān)于淺析Go語言中數(shù)組的這些細(xì)節(jié)的文章就介紹到這了,更多相關(guān)Go語言數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言集成開發(fā)環(huán)境IDE詳細(xì)安裝教程

    Go語言集成開發(fā)環(huán)境IDE詳細(xì)安裝教程

    VSCode是免費(fèi)開源的現(xiàn)代化輕量級(jí)代碼編輯器,支持幾乎所有主流的開發(fā)語言,內(nèi)置命令行工具和 Git 版本控制系統(tǒng),支持插件擴(kuò)展,這篇文章主要介紹了Go語言集成開發(fā)環(huán)境IDE詳細(xì)安裝教程,需要的朋友可以參考下
    2021-11-11
  • Golang中的深拷貝與淺拷貝使用

    Golang中的深拷貝與淺拷貝使用

    本文主要介紹了Golang中的深拷貝與淺拷貝使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Golang中的godoc使用簡(jiǎn)介(推薦)

    Golang中的godoc使用簡(jiǎn)介(推薦)

    Godoc是go語言的文檔化工具,類似于文檔化工具godoc,類似于Python的Docstring和Java的Javadoc,這篇文章主要介紹了Golang中的godoc使用簡(jiǎn)介,需要的朋友可以參考下
    2022-10-10
  • Golang 高效排序數(shù)據(jù)詳情

    Golang 高效排序數(shù)據(jù)詳情

    本文我們介紹了怎么使用 Golang 語言標(biāo)準(zhǔn)庫 sort 包排序數(shù)據(jù),需要注意的是,除了本文使用的類型之外,其它任意類型只要實(shí)現(xiàn) sort.Interface 的三個(gè)方法,都可以調(diào)用 sort.Sort() 函數(shù)排序數(shù)據(jù)。
    2021-11-11
  • Golang Goroutine的使用

    Golang Goroutine的使用

    這篇文章主要介紹了Golang Goroutine的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法

    golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法

    本文主要介紹了golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • 一文帶你輕松理解Go中的內(nèi)存逃逸問題

    一文帶你輕松理解Go中的內(nèi)存逃逸問題

    這篇文章主要給大家介紹Go中的內(nèi)存逃逸問題,文中通過代碼示例講解的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的同學(xué)可以跟著小編一起來學(xué)習(xí)
    2023-06-06
  • 使用VSCODE配置GO語言開發(fā)環(huán)境的完整步驟

    使用VSCODE配置GO語言開發(fā)環(huán)境的完整步驟

    Go語言是采用UTF8編碼的,理論上使用任何文本編輯器都能做Go語言開發(fā),大家可以根據(jù)自己的喜好自行選擇,下面這篇文章主要給大家介紹了關(guān)于使用VSCODE配置GO語言開發(fā)環(huán)境的完整步驟,需要的朋友可以參考下
    2022-11-11
  • 解讀golang plugin熱更新嘗試

    解讀golang plugin熱更新嘗試

    這篇文章主要介紹了解讀golang plugin熱更新嘗試,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Golang設(shè)計(jì)模式之適配器模式詳細(xì)講解

    Golang設(shè)計(jì)模式之適配器模式詳細(xì)講解

    這篇文章主要介紹了使用go實(shí)現(xiàn)適配器模式,這個(gè)模式就是用來做適配的,它將不兼容的接口轉(zhuǎn)換為可兼容的接口,讓原本由于接口不兼容而不能一起工作的類可以一起工作,需要的朋友可以參考下
    2023-01-01

最新評(píng)論