20-Golang结构体---值类型和更改值

结构体是值类型

package main

import "fmt"

// 定义Address结构体
type Address struct {
    Region string
    Street string
    No     string
}

// 定义User结构体
type User struct {
    ID   int
    Name string
    Addr Address //命名结构体嵌入
}

func main() {
    //简短声明并使用零值初始化
    u := User{}
    //u1拷贝u并修改元素,结构体是值类型
    u1 := u
    u1.Name = "test"
    u1.Addr.Street = "昌平"
    fmt.Printf("%#v\n", u)
    fmt.Printf("%#v\n", u1)
}

值更改

package main

import "fmt"

// 定义Address结构体
type Address struct {
    Region string
    Street string
    No     string
}

// 定义User结构体
type User struct {
    ID   int
    Name string
    Addr Address
}

// change函数更改user的Name元素
func change(u User) {
    u.Name = "xxx"
}

// changePoint函数更改User指针类型的Name元素
func changePoint(u *User) {
    u.Name = "xxxx"
}

func main() {
    //简短声明结构体并使用零值初始化
    u := User{}
    //u1拷贝u
    u1 := u
    //更改u1的元素
    u1.Name = "test"
    u1.Addr.Street = "昌平"
    fmt.Printf("%#v\n", u)
    fmt.Printf("%#v\n", u1)

    //调用change函数更改u1的元素
    change(u1)
    fmt.Printf("%#v\n", u1)

    //调用changePoint函数更改u1的元素
    changePoint(&u1)
    fmt.Printf("%#v\n", u1)
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容