Go语言-结构体学习笔记

本文通过五个示例程序详细解析了Go语言中结构体的使用方法,包括如何定义结构体、值传递与引用传递的区别、匿名结构体的应用等,帮助读者深入理解结构体及其在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go语言-结构体学习笔记

程序一:

package main

import (
	"fmt"
)

type person struct {
	Name string
	Age int
}

func main() {
	a := person{
		Name :"joe",
		Age: 19,
	}
	fmt.Println(a)
	A(a)
	fmt.Println(a)
}

func A(per person) {
	per.Age = 13
	fmt.Println("A",per)
}

输出:

{joe 19}
A {joe 13}
{joe 19}


程序二:

package main

import (
	"fmt"
)

type person struct {
	Name string
	Age int
}

func main() {
	a := person{
		Name :"joe",
		Age: 19,
	}
	fmt.Println(a)
	A(&a)
	fmt.Println(a)
}

func A(per *person) {
	per.Age = 13
	fmt.Println("A",per)
}

改用指针后,成功改变了结构体的值

输出:

{joe 19}
A &{joe 13}
{joe 13}


程序三:

package main

import (
	"fmt"
)

type person struct {
	Name string
	Age int
}

func main() {
	a := &person{
		Name :"joe",
		Age: 19,
	}
	fmt.Println(a)
	A(a)
	B(a)
	fmt.Println(a)
}

func A(per *person) {
	per.Age = 13
	fmt.Println("A",per)
}

func B(per *person) {
	per.Age = 15
	fmt.Println("B",per)
}

输出:

&{joe 19}
A &{joe 13}
B &{joe 15}
&{joe 15}


我们看到,a为指针变量后,传参数时,就不用每次都写上&a了


程序四:

package main

import (
	"fmt"
)

type person struct {
	Name string
	Age int
}

func main() {
	a := &person{
		Name :"joe",
		Age: 19,
	}
	a.Name = "ok"
	fmt.Println(a)
	A(a)
	B(a)
	fmt.Println(a)
}

func A(per *person) {
	per.Age = 13
	fmt.Println("A",per)
}

func B(per *person) {
	per.Age = 15
	fmt.Println("B",per)
}

输出: 

&{ok 19}

A &{ok 13}

B &{ok 15}

&{ok 15}


程序五:


匿名结构休定义

package main

import (
	"fmt"
)

func main() {

	a := struct {
		Name string
		Age int
	}{
		Name:"joe",
		Age: 19,
	}
	fmt.Println(a)
}

输出

{joe 19}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值