七叶笔记 » golang编程 » golang2021数据格式(66)结构体作为函数参数

golang2021数据格式(66)结构体作为函数参数

结构体也可以作为函数参数,进行传递,如下所示:

结构体作为函数参数进行传递,是值传递。

练习:3个学生,计算其平均分

思路:(1):定义一个结构体如下:

(2):定义一个结构体数组,并且添加学生信息

(3):计算平均值

练习:3个学生,每个学生3门课程,求其平均值

思路和上题是一样的,不同之处在于结构体中,定义了一个数组类型的成员,存储三门成绩

 

 

 

体会结构体的优势,掌握基本的用法。

传值

func printValue(stu Student) {

    stu.id = 250

    //printValue stu =  {250 Luffy 109 18 s EastSea}

    fmt.Println(“printValue stu = “, stu)

}

 

func main() {

 

var s Student = Student{1, “Luffy”, ‘m’, 18, “EastSea”}

 

 

    printValue(s)        //值传递,形参修改不会影响到实参值

    fmt.Println(“main s = “, s) //main s =  {1 Luffy 109 18 EastSea}

}

传参过程中,实参会将自己的值拷贝一份给形参。因此结构体“传值”操作几乎不会在实际开发中被使用到。近乎100%的使用都采用“传址”的方式,将结构体的引用传递给所需函数。

传引用

func printPointer(p *Student) {

    p.id = 250

    //printPointer p =  &{250 Luffy 109 18 EastSea}

    fmt.Println(“printPointer p = “, p)

}

 

func main() {

    var s Student = Student{1, “Luffy”, ‘m’, 18, “EastSea”}

 

    printPointer(&s)      //传引用(地址),形参修改会影响到实参值

    fmt.Println(“main s = “, s) //main s = {250 Luffy 109 18 EastSea}

}

 

 

 

 

 

 

 

 

 

 

相关文章