a *abc和 b abc

a.length=1 b.length=1 这有什么实际区别吗?

共 1 个回复


jimmykuu

package main

import (
    "fmt"
)

type abc struct {
    length int
}

func byRef(c *abc) {
    c.length = 3

    fmt.Println("byRef:", c)
}

func byVal(c abc) {
    c.length = 3

    fmt.Println("byVal:", c)
}

func main() {
    var a *abc = &abc {2}
    var b abc = abc{2}

    fmt.Println(a)
    fmt.Println(b)
    fmt.Println("----------")

    a.length = 1
    b.length = 1

    fmt.Println(a)
    fmt.Println(b)
    fmt.Println("----------")

    byRef(a)
    byVal(b)
    fmt.Println("----------")

    fmt.Println(a)
    fmt.Println(b)
}

试试能看明白你就懂了。

建议找本教程看看吧。

# 0