第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 int 添加到 slice

如何將 int 添加到 slice

Go
楊__羊羊 2023-05-15 15:16:17
我有一個我使用創(chuàng)建的切片var x []int;for i := 2; i < 10; i += 2 {    x = append(x, i);}我想在這個切片前加上一個整數,比如x = append(2, x)但顯然它不會工作,因為 append 需要一個切片作為第一個參數。我試過這個,但它只適用于字符串,在我的情況下不起作用。
查看完整描述

4 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

使用切片復合文字:?[]int{1},例如:

package main


import (

? ? "fmt"

)


func main() {

? ? var x []int

? ? for i := 2; i < 10; i += 2 {

? ? ? ? x = append(x, i)

? ? }

? ? fmt.Println(x)


? ? x = append([]int{1}, x...)


? ? fmt.Println(x)

}

游樂場:https://play.golang.org/p/Yc87gO7gJlD

輸出:

[2?4?6?8]
[1?2?4?6?8]

然而,這個更高效的版本可能會進行更少的分配,只有在沒有空閑切片容量時才需要分配。

package main


import (

? ? "fmt"

)


func main() {

? ? var x []int

? ? for i := 2; i < 10; i += 2 {

? ? ? ? x = append(x, i)

? ? }

? ? fmt.Println(x)


? ? x = append(x, 0)

? ? copy(x[1:], x)

? ? x[0] = 1


? ? fmt.Println(x)

}

游樂場: https: //play.golang.org/p/fswXul_YfvD


輸出:


[2 4 6 8]

[1 2 4 6 8]

好的代碼必須是可讀的。在 Go 中,我們經常將實現(xiàn)細節(jié)隱藏在函數中。Go 編譯器正在優(yōu)化編譯器,prependInt內聯(lián)小而簡單的函數(如 )。


package main


import (

? ? "fmt"

)


func prependInt(x []int, y int) []int {

? ? x = append(x, 0)

? ? copy(x[1:], x)

? ? x[0] = y

? ? return x

}


func main() {

? ? var x []int

? ? for i := 2; i < 10; i += 2 {

? ? ? ? x = append(x, i)

? ? }

? ? fmt.Println(len(x), cap(x), x)


? ? x = prependInt(x, 1)


? ? fmt.Println(len(x), cap(x), x)

}

游樂場: https: //play.golang.org/p/wl6gvoXraKH


輸出:


4 4 [2 4 6 8]

5 8 [1 2 4 6 8]



查看完整回答
反對 回復 2023-05-15
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

當前版本是go1.14.11


沒有 for 循環(huán)的前置:


package main


import "fmt"

func main () {

  data := []int{1, 2, 3, 4}

  fmt.Println(data)

  data = append([]int{99}, data...)

  fmt.Println(data)

}

示例形式:https://codingair.wordpress.com/2014/07/18/go-appendprepend-item-into-slice/


使用整數:https://play.golang.org/p/gaLhB5_d1Iu


查看完整回答
反對 回復 2023-05-15
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我知道這個問題只是為了int但我想我會把這個添加到討論中:


https://play.golang.com/p/PNax2a1rL3q


import (

? ? "golang.org/x/exp/constraints"

)


type Number interface {

? ? constraints.Signed | constraints.Unsigned | constraints.Float

}


func prepend[T Number](list []T, elems ...T) []T {

? ? results := make([]T, len(list)+len(elems))

? ? results = append(results, 0)

? ? copy(results[len(elems):], list)

? ? copy(results[:len(elems)], elems)

? ? return results

}

查看完整回答
反對 回復 2023-05-15
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

另一個答案使用appendand ,但您可以在一兩行中copy僅使用 , 來完成:append


package main

import "fmt"


func main() {

   {

      a := []int{20, 30}

      a = append(append(a, 10), a...)[len(a):]

      fmt.Println(a)

   }

   {

      a := []int{20, 30}

      a = append(make([]int, 1), a...)

      a[0] = 10

      fmt.Println(a)

   }

   { // if starting with empty slice, use: a := make([]int, 0, 1)

      a := []int{20, 30}

      a = append(a[:1], a...)

      a[0] = 10

      fmt.Println(a)

   }

}

或者作為另一種選擇,您可以使用鏈表:


package main


import (

   "container/list"

   "fmt"

)


func main() {

   a := list.New()

   a.PushBack(20)

   a.PushBack(30)

   a.PushFront(10)

   for n := a.Front(); n != nil; n = n.Next() {

      fmt.Println(n.Value)

   }

}

https://golang.org/pkg/container/list


查看完整回答
反對 回復 2023-05-15
  • 4 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號