Go 如何附加到切片指针接收器

Go 如何附加到切片指针接收器,go,Go,我有一个切片的类型别名。当切片是指针接收器时,我希望能够附加到切片(或从切片中筛选): package main import ( "fmt" ) type itself []string func (h itself) appendToItself(test string) { h = append(h, test) } func main() { h := itself{"1", "2"} h.appendToItself("3") fmt.P

我有一个切片的类型别名。当切片是指针接收器时,我希望能够附加到切片(或从切片中筛选):

package main

import (
    "fmt"
)

type itself []string

func (h itself) appendToItself(test string) {
    h = append(h, test)
}

func main() {
    h := itself{"1", "2"}
    h.appendToItself("3")
    fmt.Println(h, "<- how do I make it [1,2,3]")
}
主程序包
进口(
“fmt”
)
键入本身[]字符串
func(h本身)附录自身(测试字符串){
h=附加(h,测试)
}
func main(){
h:=本身{“1”,“2”}
h、 附件本身(“3”)

fmt.Println(h,“您需要实际传递一个指针,请尝试:

package main

import (
    "fmt"
)

type itself []string

func (h *itself) appendToItself(test string) {
    *h = append(*h, test)
}

func main() {
    h := itself{"1", "2"}
    h.appendToItself("3")
    fmt.Println(h, "<- how do I make it [1,2,3]")
}
主程序包
进口(
“fmt”
)
键入本身[]字符串
func(h*自身)附录自身(测试字符串){
*h=附加(*h,测试)
}
func main(){
h:=本身{“1”,“2”}
h、 附件本身(“3”)
Println(h),“只是想补充一下为什么需要这样做。切片本身包含3个值:指向底层数组的指针、“长度”和“容量”。当您传入一个切片时,您传入的是这3个值的副本。函数仍然可以读取和更改切片中的项目,因为它有正确的指针,但是,它无法更改长度,因为它正在使用这些字段的副本。使用指针允许函数更改原始字段的“长度”。
package main

import (
    "fmt"
)

type itself []string

func (h *itself) appendToItself(test string) {
    *h = append(*h, test)
}

func main() {
    h := itself{"1", "2"}
    h.appendToItself("3")
    fmt.Println(h, "<- how do I make it [1,2,3]")
}