存储学生的详细信息,例如学生的学号,学生的姓名,年龄,家庭住址等。
通过定义变量存储?比较麻烦,并且不利于数据的管理。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
- type Student struct {
- id int
- name string
- sex byte
- age int
- addr string
- }
结构体可以很好的管理一批有联系的数据,得用结构体可以提高程序的易读性。
type 结构体名 struct{
成员名 数据类型
}
- type Student struct {
- id int
- name string
- sex byte
- age int
- addr string
- }
- //注意不能在成员名称前加 var
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
- sex byte
- age int
- addr string
- }
- func main() {
- var s Student = Student{101,"Bob",'1',18,"Sichuan"}
- fmt.Println(s)
- }
输出:
{101 Bob 49 18 Sichuan}
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
- sex byte
- age int
- addr string
- }
- func main() {
- var s Student = Student{id: 101,name: "Bob",age: 18}
- fmt.Println(s)
- }
输出:
{101 Bob 0 18 }
//sex 的类型默认是0,addr的默认值是空
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
- sex byte
- age int
- addr string
- }
- func main() {
- var s Student
- s.id = 101
- s.sex = 0
- s.name = "Bob"
- fmt.Println(s)
- }
输出:
{101 Bob 0 0 }
//age的类型默认为0,所有此处两个0
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var students [3]Student = [3]Student{
- {101,"Mike"},
- {102,"Bob"},
- {103,"Rita"},
- }
- fmt.Println(students)
- fmt.Println(students[1])
- fmt.Println(students[1].id)
- }
输出:
[{101 Mike} {102 Bob} {103 Rita}]
{102 Bob}
102
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var students [3]Student = [3]Student{
- {101,"Mike"},
- {102,"Bob"},
- {103,"Rita"},
- }
- fmt.Println(students)
- fmt.Println(students[1])
- fmt.Println(students[1].id)
- students[1].name = "Rename"
- fmt.Println(students)
- fmt.Println(students[1].name)
-
- }
输出:
[{101 Mike} {102 Bob} {103 Rita}]
{102 Bob}
102
[{101 Mike} {102 Rename} {103 Rita}]
Rename
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var students [3]Student = [3]Student{
- {101,"Mike"},
- {102,"Bob"},
- {103,"Rita"},
- }
- for _,v := range students{
- fmt.Println(v)
- fmt.Println(v.name)
- }
-
- }
输出:
{101 Mike}
Mike
{102 Bob}
Bob
{103 Rita}
Rita
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var s[]Student = []Student{
- {101,"Bob"},
- {102,"Rita"},
- }
- fmt.Println(s)
- fmt.Println(s[0])
- fmt.Println(s[0].name)
- }
输出:
[{101 Bob} {102 Rita}]
{101 Bob}
Bob
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var s[]Student = []Student{
- {101,"Bob"},
- {102,"Rita"},
- }
- fmt.Println(s[0].name)
- s[0].name = "rename"
- fmt.Println(s[0].name)
- }
输出:
Bob
rename
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var s[]Student = []Student{
- {101,"Bob"},
- {102,"Rita"},
- }
- for _,v := range s {
- fmt.Println(v.name)
- }
- }
输出:
Bob
Rita
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- var s[]Student = []Student{
- {101,"Bob"},
- {102,"Rita"},
- }
- s = append(s,Student{103,"Mike"})
- fmt.Println(s)
- }
输出:
[{101 Bob} {102 Rita} {103 Mike}]
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- m := make(map[int]Student)
- m[1] = Student{101,"Mike"}
- m[2] = Student{102,"Rita"}
- fmt.Println(m)
- }
输出:
map[1:{101 Mike} 2:{102 Rita}]
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- m := make(map[int]Student)
- m[1] = Student{101,"Mike"}
- m[2] = Student{102,"Rita"}
- for key,value := range m{
- fmt.Println(key," ",value)
- }
- }
输出结果:
1 {101 Mike}
2 {102 Rita}
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
-
- }
- func main() {
- m := make(map[int]Student)
- m[1] = Student{101,"Mike"}
- m[2] = Student{102,"Rita"}
- fmt.Println(m)
- delete(m,1)
- fmt.Println(m)
- }
输出:
map[1:{101 Mike} 2:{102 Rita}]
map[2:{102 Rita}]
初始化学生信息
- package main
-
- import "fmt"
-
- type Student struct {
- id int
- name string
- }
- func main() {
- stu := make([]Student,3)
- initData(stu)
- fmt.Println(stu)
- }
- func initData(stu []Student) {
- for i:=0;i<len(stu);i++{
- fmt.Println("请输入第",i+1,"个学生的信息:")
- fmt.Scan(&stu[i].id,&stu[i].name)
- }
- }
输出:
请输入第 1 个学生的信息:
101 bob
请输入第 2 个学生的信息:
102 alicy
请输入第 3 个学生的信息:
103 rita
[{101 bob} {102 alicy} {103 rita}]