gpt4 book ai didi

loops - 指针 slice 和循环

转载 作者:IT王子 更新时间:2023-10-29 02:27:05 24 4
gpt4 key购买 nike

<分区>

我想这个问题问了好几次,但我还是很困惑:

我有以下代码:

type obj struct {
s *string
}

var cmdsP = []*string {
stringPointer("create"),
stringPointer("delete"),
stringPointer("update"),
}

var cmds = []string {
"create",
"delete",
"update",
}

// []*string
func loop1() {
slice := make([]obj, 0, 0)

for _, cmd := range cmdsP {
slice = append(slice, obj{cmd})
}
for _, o := range slice {
fmt.Println(*o.s)
}
}

// []string
func loop2() {
slice := make([]obj, 0, 0)
for _, cmd := range cmds {
slice = append(slice, obj{&cmd})
}
for _, o := range slice {
fmt.Println(*o.s)
}
}

func stringPointer(v string) *string {
return &v
}

https://play.golang.org/p/65Le_8Pi3Mi

唯一的区别在于 slice 语义 []*string[]string 它如何改变 cmd 变量的行为?您能否详细画出或解释一下在两次循环的迭代过程中内存中发生了什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com