Golangピット-Sliceを関数パラメータとして渡す

1029 ワード

Golangピットが多すぎるのではなく、自分のレベルが足りないのです!--9命の怪猫
SliceはC/C++に対応して類似のポインタの存在である.Golangでは、Sliceが使いやすく、柔軟です.しかし、すべての「柔軟」は、コンピュータの世界でも「多くの穴」を意味する.
例を見てみましょう

package main

import "fmt"

func Add2Slice(s []int, t int) {
	s[0]++
	s = append(s, t)
	s[0]++
}
func main() {
	a := []int{0, 1, 2, 3}
	Add2Slice(a, 4)
	fmt.Println(a)
}

//   ...

{1, 1, 2, 3}

?! ?!

slice 。 ,append , 。
append , ( 1000), 1000, 1.25 。


package main

import "fmt"

func Add2Slice(s *[]int, t int) {
	//*s[0]++  /*   ! */
	*s = append(*s, t)
	//s[0]++
}
func main() {
	a := []int{0, 1, 2, 3}
	Add2Slice(&a, 4)
	fmt.Println(a)
}

//     

{0, 1, 2, 3, 4}