在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO  網(wǎng)絡安全/ go語言如何強制使用值復制的方式來賦值而不是僅僅讓指針指向同一個值

go語言如何強制使用值復制的方式來賦值而不是僅僅讓指針指向同一個值

把一個指針類型的變量賦值給一個新變量時,只是傳了一個地址過去,兩個變量實際上指向同一個對象,改動一個也就是兩個都改。

package main

import (
    "container/list"
    "fmt"
)

func main() {
    l1 := list.New() // *list.List
    l1.PushBack(1)
    fmt.Println(l1.Back().Value) // 1

    l2 := l1
    l2.PushBack(2)
    fmt.Println(l1.Back().Value, l2.Back().Value) // 2 2

    l1.PushBack(3)
    fmt.Println(l1.Back().Value, l2.Back().Value) // 3 3
}

有什么簡單的寫法能讓指針類型的賦值像值類型的賦值那樣,把值復制一份再傳過去?

回答
編輯回答
情殺
package main

import (
    "container/list"
    "fmt"
)

func main() {
    l1 := list.New()
    l1.PushBack(1)
    fmt.Println(l1.Back().Value)

    l2 := *l1
    l2.PushBack(2)
    fmt.Println(l1.Back().Value, l2.Back().Value)
}

輸出

1
2 1
2018年8月7日 05:05