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

Golang 菜鳥教程

Golang 控制語(yǔ)句

Golang 函數(shù) & 方法

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

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 語(yǔ)言切片復(fù)制

切片是相似類型的存儲(chǔ)元素,則不允許不同類型的元素的存儲(chǔ)在同一條帶的可變長(zhǎng)度序列。在切片中,您可以使用Go語(yǔ)言提供的copy()函數(shù)將一個(gè)切片復(fù)制到另一個(gè)切片中。換句話說(shuō),通過(guò)copy()函數(shù)可以將一個(gè)切片的元素復(fù)制到另一切片中。

語(yǔ)法:

func copy(dst, src []Type) int

此處,dst表示目標(biāo)切片,而src表示源切片。它將返回要復(fù)制的元素?cái)?shù)量,該數(shù)量應(yīng)len(dst)len(src)最小值。讓我們借助給定的示例演示如何使用:

package main

import "fmt"

func main() {

    //創(chuàng)建切片
    slc1 := []int{58, 69, 40, 45, 11, 56, 67, 21, 65}
    var slc2 []int
    slc3 := make([]int, 5)
    slc4 := []int{78, 50, 67, 77}

    //復(fù)制之前
    fmt.Println("Slice_1:", slc1)
    fmt.Println("Slice_2:", slc2)
    fmt.Println("Slice_3:", slc3)
    fmt.Println("Slice_4:", slc4)

    //復(fù)制切片
    copy_1 := copy(slc2, slc1)
    fmt.Println("\nSlice:", slc2)
    fmt.Println("復(fù)制的元素總數(shù):", copy_1)

    copy_2 := copy(slc3, slc1)
    fmt.Println("\nSlice:", slc3)
    fmt.Println("復(fù)制的元素總數(shù):", copy_2)

    copy_3 := copy(slc4, slc1)
    fmt.Println("\nSlice:", slc4)
    fmt.Println("復(fù)制的元素總數(shù):", copy_3)

    //這里不要混淆,因?yàn)樵谏厦?    //復(fù)制了slc4的代碼行
    //并因此進(jìn)行永久修改,即
    // slc 4包含[58 69 40 45]
    copy_4 := copy(slc1, slc4)
    fmt.Println("\nSlice:", slc1)
    fmt.Println("復(fù)制的元素總數(shù):", copy_4)
}

輸出:

Slice_1: [58 69 40 45 11 56 67 21 65]
Slice_2: []
Slice_3: [0 0 0 0 0]
Slice_4: [78 50 67 77]

Slice: []
復(fù)制的元素總數(shù): 0

Slice: [58 69 40 45 11]
復(fù)制的元素總數(shù): 5

Slice: [58 69 40 45]
復(fù)制的元素總數(shù): 4

Slice: [58 69 40 45 11 56 67 21 65]
復(fù)制的元素總數(shù): 4

用法說(shuō)明:在上面的示例中,我們有四個(gè)整數(shù)類型切片,并對(duì)它們執(zhí)行復(fù)制操作:

  • copy 1:= copy(slc2, slc1):在這里,slc2是目標(biāo)片,slc1是源片。這里,當(dāng)我們嘗試在slc2片中復(fù)制slc1片時(shí),slc2是nil切片,那么copy方法將返回源切片和目標(biāo)切片的最小長(zhǎng)度,對(duì)于空切片slc2,最小長(zhǎng)度為0。

  • copy_2:= copy(slc3,slc1):在這里,slc3是目標(biāo)切片,而slc1是源切片。 此處,slc3切片是空切片,因此當(dāng)我們嘗試使用copy()函數(shù)將slc1切片復(fù)制到slc3時(shí),由于該切片的長(zhǎng)度為5,因此它僅從slc1切片復(fù)制了5個(gè)元素,因?yàn)樵撉衅拈L(zhǎng)度為5,因此可以 不存儲(chǔ)大于5的元素。

  • copy_3:= copy(slc4,slc1):在這里,slc4是目標(biāo)切片,而slc1是源切片。當(dāng)我們嘗試使用copy()函數(shù)將slc1 slice 復(fù)制到slc4 slice時(shí),它僅從索引0開始復(fù)制其中的4個(gè)元素。由于slc4 切片 的長(zhǎng)度為4,因此它不能存儲(chǔ)大于4的元素。

  • copy_4:= copy(slc1,slc4):在這里,輸出后可能會(huì)感到困惑。 請(qǐng)參見,上面的代碼行中的slc4已更新。 因此,現(xiàn)在考慮slc4的更新值。 因此,現(xiàn)在slc4具有4個(gè)元素,而slc1具有9個(gè)元素。 因此,將要復(fù)制的元素總數(shù)為4。

范例2:

package main 
  
import "fmt"
  
func main() { 
  
    //源切片
    slice_1 := []string{"nhooos", "for", "nhooos", "GFG"} 
  
    //創(chuàng)建目標(biāo)切片,使用make函數(shù)
    slice_2 := make([]string, 3) 
  
    //復(fù)制前
    fmt.Println("Slice_1: ", slice_1) 
    fmt.Println("Slice_2: ", slice_2) 
  
    //將slice_1復(fù)制到slice_2
    Copy_1 := copy(slice_2, slice_1) 
    fmt.Println("\nSlice_1: ", slice_1) 
    fmt.Println("Slice_2: ", slice_2) 
    fmt.Println("復(fù)制的元素?cái)?shù): ", Copy_1) 
  
        //復(fù)制切片
        //使用復(fù)制功能
        //清楚地看到代碼
    Copy_2 := copy(slice_1, []string{"123nhooos", "gfg"}) 
    fmt.Println("\nSlice_1 : ", slice_1) 
    fmt.Println("復(fù)制的元素?cái)?shù):", Copy_2)   
}

輸出:

Slice_1:  [nhooos for nhooos GFG]
Slice_2:  [  ]

Slice_1:  [nhooos for nhooos GFG]
Slice_2:  [nhooos for nhooos]
復(fù)制的元素?cái)?shù):  3

Slice_1:  [123nhooos gfg nhooos GFG]
復(fù)制的元素?cái)?shù): 2