go - 转到下标指针引用

标签 go

s的结果是[1, 2, 3],我认为 slice 包含对基础数组的引用。不是这样吗

package main

import (
    "fmt"
)

func main() {
    s := []int{1, 2, 3}
    ss := s[1:]
    ss = append(ss, 4)

    for _, v := range ss {
        v += 10
    }

    for i := range ss {
        ss[i] += 10
    }

    fmt.Println(s)
}

最佳答案

似乎您已经创建了slice s的副本,并且已经对slice copy ss进行了更改,以为所做的更改也将传递给该副本所基于的slice。

第一个for循环还遍历了片ss的元素,但实际上并未对其进行任何处理,因为range在为您提供元素值时也会创建一个副本,因此实际上不执行任何操作!

似乎您正在尝试执行以下操作:

  • 将值4附加到 slice s
  • slice的索引1到 slice 的末尾取每个值,并添加10

  • 如果是这种情况,这应该可以帮助您实现:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        s := []int{1, 2, 3}
        s = append(s, 4)
    
        for i := range s {
            if i == 0 {
                continue
            }
            s[i] += 10
        }
    
        fmt.Println(s)
    }
    

    您可以在Go操场上看到它:Link

    关于go - 转到下标指针引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59696221/

    相关文章:

    mongodb - Mongo-go-driver error New client error ClientOptions in argument to mongo.NewClient 错误

    html-parsing - 使用 Go lang 从网页中提取链接

    session - Gorilla Sessions - 如何根据请求自动更新 Cookie 过期时间?

    templates - 在 Go 模板中请求上下文

    unit-testing - 在 GO 中测试 - 项目包中的代码覆盖率

    go - 如何向数据访问层方法添加测试?

    mysql - 如何使用unix套接字连接MySQL?

    .net - Go 语言中的 Sax 解析 - 速度慢

    Golang 在创建新文件时替换以前打开的文件

    go - golang map 未添加元素