亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 切片作為函數(shù)參數(shù)

slice是一個(gè)可變長(zhǎng)度序列,用于存儲(chǔ)相似類型的元素,不允許在同一slice中存儲(chǔ)不同類型的元素。就像具有索引值和長(zhǎng)度的數(shù)組一樣,但是切片的大小允許調(diào)整,它們不像數(shù)組那樣處于固定大小。在Go語言中,允許您將切片傳遞給函數(shù),這意味著該函數(shù)獲取切片的副本。
切片將按值與切片的容量,長(zhǎng)度一起傳遞給函數(shù),并且切片的指針始終指向基礎(chǔ)數(shù)組。 因此,如果我們對(duì)通過值傳遞給函數(shù)的切片進(jìn)行了一些更改,則會(huì)反映在函數(shù)外部存在的切片中。讓我們借助示例來討論這個(gè)概念:

//向函數(shù)傳遞一個(gè)切片
package main

import "fmt"

//切片所在的函數(shù)
//通過值傳遞
func myfun(element []string) {

    //修改給定的切片
    element[2] = "Java"
    fmt.Println("修改切片: ", element)
}

func main() {

    //創(chuàng)建切片
    slc := []string{"C#", "Python", "C", "Perl"}

    fmt.Println("初始切片: ", slc)

    //將切片傳遞給函數(shù)
    myfun(slc)

    fmt.Println("最終切片:", slc)

}

輸出:

初始切片:  [C# Python C Perl]
修改切片:  [C# Python Java Perl]
最終切片: [C# Python Java Perl]

用法說明:在上面的示例中,我們有一個(gè)名為slc的切片。這個(gè)片通過myfun()函數(shù)傳遞。正如我們所知,切片指針總是指向相同的引用,即使它們?cè)诤瘮?shù)中傳遞。因此,當(dāng)我們將值C,索引值為2更改為Java時(shí)。這個(gè)變化也反映了函數(shù)外部的切片,所以修改后的最后一個(gè)切片是[c# Python Java perl]。

//將切片傳遞給函數(shù)
package main

import "fmt"

//通過值傳遞
func myfun(element []string) {

    //這里我們只修改切片
    //使用append函數(shù)
    //在這里,此函數(shù)僅修改
    //存在于其中的切片的副本
    //該函數(shù)不修改原始切片
    element = append(element, "Java")
    fmt.Println("修改切片: ", element)
}

func main() {

    //創(chuàng)建切片
    slc := []string{"C#", "Python", "C", "Perl"}

    fmt.Println("初始切片: ", slc)

    //傳遞切片
    //到函數(shù)
    myfun(slc)
    fmt.Println("最終切片: ", slc)

}

輸出:

初始切片:  [C# Python C Perl]
修改切片:  [C# Python C Perl Java]
最終切片:  [C# Python C Perl]