shelgi 2021-05-20 16:12 采纳率: 0%
浏览 17

为什么slice返回的结果是这样的?

package main

import "fmt"

func SliceRise(s []int){
	s=append(s,0)
	for i:=range s{
		s[i]++
	}
}

func main(){
	s1:=[]int{1,2}
	s2:=s1
	s2=append(s2,3)
	fmt.Println(s1,s2)
	SliceRise(s1)
	SliceRise(s2)
	fmt.Println(s1,s2)
}

  • 写回答

1条回答 默认 最新

  • ProblemTerminator Go领域优质创作者 2022-03-10 14:05
    关注

    如果你想让打出来的s1的结果和s2一样,这样就可以:
    s2:=&s1
    *s2=append(*s2,3)

    第二个疑点,for i:=range s遍历的是当前切片,按这个写法会对每个元素做+1操作,因此就变成了2,3,4
    明白了吗,如果还有其它问题欢迎随时提问,如果有帮助欢迎采纳哦

    评论

报告相同问题?

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?