第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

范圍的奇怪行為

范圍的奇怪行為

Go
慕尼黑8549860 2023-08-07 15:19:52
考慮以下最小示例:package mainimport "fmt"type runner interface {    s1(int)    s2(int)}type test struct {    x1 []int    x2 []int}func (t test) s1(v int) {    t.x1 = append(t.x1, v)    t.s2(v)}func (t test) s2(v int) {    t.x2[v] = v}func main() {    t := test{        x1: make([]int, 0),        x2: make([]int, 10)}    for i := 0; i < 10; i++ {        t.s1(i)    }    fmt.Println(t)}現(xiàn)在如果你運(yùn)行它,你將得到如下結(jié)果:{[] [0 1 2 3 4 5 6 7 8 9]}這意味著該x1數(shù)組永遠(yuǎn)不會(huì)被填充?;蛘邔?shí)際上,它是,但每次s1函數(shù)退出時(shí)都會(huì)重置。s2將項(xiàng)目放入預(yù)定義的數(shù)組中效果很好。有誰(shuí)知道這里到底發(fā)生了什么?是因?yàn)閿?shù)組修改的范圍嗎?這似乎有點(diǎn)違反直覺(jué)。PS 我確實(shí)明白 x1 是一個(gè)切片,其中 x2 是一個(gè)實(shí)際的預(yù)定義數(shù)組。我自己的理論是,如果您使用“切片”,它們只能在特定范圍內(nèi)更改,而不能在其他任何地方更改。
查看完整描述

1 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

值接收者制作類(lèi)型的副本并將其傳遞給函數(shù)。

只需將其設(shè)置為指針即可:


func (t *test) s1(v int) {

    t.x1 = append(t.x1, v)

    t.s2(v)

}

輸出:


&{[0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9]}

代碼:


package main


import "fmt"


type runner interface {

    s1(int)

    s2(int)

}


type test struct {

    x1 []int

    x2 []int

}


func (t *test) s1(v int) {

    t.x1 = append(t.x1, v)

    t.s2(v)

}


func (t test) s2(v int) {

    t.x2[v] = v

}


func main() {

    t := &test{

        x1: make([]int, 0),

        x2: make([]int, 10)}


    for i := 0; i < 10; i++ {

        t.s1(i)

    }


    fmt.Println(t)

}


查看完整回答
反對(duì) 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)