package main import"fmt" // 定义结构体 type student struct { name string age int like []string } funcmain() { s := student{name:"张三",age:17} fmt.Printf(" 变量s--> 值: %v \n",s) grownUp(s) fmt.Printf("调用函数后,变量s--> 值: %v \n",s) } // 传结构体值作为参数 funcgrownUp( s student) { s.age = 80 s.name = "长大的 "+s.name } /**输出 变量s--> 值: {张三 17 []} 调用函数后,变量s--> 值: {张三 17 []} */
3.2 传结构体指针作为参数
package main import"fmt" // 定义结构体 type student struct { name string age int like []string } funcmain() { s := student{name:"张三",age:17} fmt.Printf(" 变量s--> 值: %v \n",s) // 取址 grownUp(&s) fmt.Printf("调用函数后,变量s--> 值: %v \n",s) } // 传结构体指针作为参数 funcgrownUp( s *student) { s.age = 80 s.name = "长大的 "+s.name } /** 输出: 变量s--> 值: {张三 17 []} 调用函数后,变量s--> 值: {长大的 张三 80 []} */
3.3 返回对象
package main import"fmt" // 定义结构体 type student struct { name string age int like []string } funcmain() { s := getStudent("杨过",40,[]string{"骑大雕"}) fmt.Printf("函数返回值 s--> 值: %v 类型: %T \n",s,s) } // 作为值类型传递 funcgetStudent( name string, age int,likes []string) student { return student{name,age,likes} } // 函数返回值 s--> 值: {杨过 40 [骑大雕]} 类型: main.student
3.4 返回指针
package main import"fmt" // 定义结构体 type student struct { name string age int like []string } funcmain() { s := getStudent("杨过",40,[]string{"骑大雕"}) fmt.Printf("函数返回值 s--> 值: %v 类型: %T \n",s,s) }
package main import"fmt" type A struct { name string age int } type B struct { name string height float32 } // 在C结构体中嵌套A和B type C struct { A B } funcmain() { // 定义结构体C c := C{} // 不冲突的成员赋值 c.age = 12 c.height = 1.88 // 冲突的成员赋值 c.A.name = "这是A的成员" c.B.name = "这是B的成员" fmt.Printf("变量c -> %v \n", c) } // 输出: 变量c -> {{这是A的成员 12} {这是B的成员 1.88}}