Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結構體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項

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

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

//向函數(shù)傳遞一個切片
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]

用法說明:在上面的示例中,我們有一個名為slc的切片。這個片通過myfun()函數(shù)傳遞。正如我們所知,切片指針總是指向相同的引用,即使它們在函數(shù)中傳遞。因此,當我們將值C,索引值為2更改為Java時。這個變化也反映了函數(shù)外部的切片,所以修改后的最后一個切片是[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]
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清