在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:
定义结构体结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体有中一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_name struct{ struct_field_name type .......... } 一旦定义了结构体类型,它就能用于变量的声明,语法格式如下: 两种声明的方法: ① variable_name := struct_name{sturct_field_name:value,.....} ② variable_name := struct_name{} variable_name.struct_filed_name = value ....... 访问结构体成员如果要访问结构体成员,需要使用点号 (.) 操作符,格式为:"结构体.成员名"。 结构体类型变量使用struct关键字定义,实例如下: 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 //结构体 8 type Books struct { 9 //结构体中的字段及字段对应的数据类型 10 title string 11 author string 12 address string 13 mobile int8 14 publisher string 15 16 } 17 18 func main(){ 19 //实例化结构体并赋值,用的第一种方法 20 book1 := Books{title:"小陈的幸福生活~",author:"小陈",address:"东京有点热",mobile:110,publisher:"日本????"} 21 //实例化结构体并赋值,分别给每个字段赋值 22 book2 := Books{} 23 book2.title = "小兔子要搞事情" 24 book2.author = "帅兔子~" 25 book2.address = "中国~日本省" 26 book2.mobile = 110 27 book2.publisher = "????" 28 29 //打印赋值以后的信息 30 fmt.Printf("book title %s \n", book1.title) 31 fmt.Printf("book author %s \n", book1.author) 32 fmt.Printf("book address %s \n", book1.address) 33 fmt.Printf("book mobile %d \n", book1.mobile) 34 fmt.Printf("book publisher %s \n", book1.publisher) 35 36 fmt.Println("-----------------------------------") 37 38 fmt.Printf("book title %s \n", book2.title) 39 fmt.Printf("book author %s \n", book2.author) 40 fmt.Printf("book address %s \n", book2.address) 41 fmt.Printf("book mobile %d \n", book2.mobile) 42 fmt.Printf("book publisher %s \n", book2.publisher) 43 } 以上代码运行执行结果: book title 小陈的幸福生活~ book author 小陈 book address 东京有点热 book mobile 110 book publisher 日本???? ----------------------------------- book title 小兔子要搞事情 book author 帅兔子~ book address 中国~日本省 book mobile 110 book publisher ???? 结构体作为函数参数你可以向其他数据类型一样将结构体类型作为参数传递给函数。并以以上实例的方式访问结构体变量: 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 //结构体 8 type Books struct { 9 //结构体中的字段及字段对应的数据类型 10 title string 11 author string 12 address string 13 mobile int8 14 publisher string 15 16 } 17 18 //用于打印结构体的自定义函数 19 func printBook(book Books){ 20 fmt.Printf("book title %s \n", book.title) 21 fmt.Printf("book author %s \n", book.author) 22 fmt.Printf("book address %s \n", book.address) 23 fmt.Printf("book mobile %d \n", book.mobile) 24 fmt.Printf("book publisher %s \n", book.publisher) 25 fmt.Println("------------------------------------") 26 27 } 28 29 func main(){ 30 //实例化结构体并赋值,用的第一种方法 31 book1 := Books{title:"小陈的幸福生活~",author:"小陈",address:"东京有点热",mobile:110,publisher:"日本????"} 32 //实例化结构体并赋值,分别给每个字段赋值 33 book2 := Books{} 34 book2.title = "小兔子要搞事情" 35 book2.author = "帅兔子~" 36 book2.address = "中国~日本省" 37 book2.mobile = 110 38 book2.publisher = "????" 39 40 //打印赋值以后的信息 41 printBook(book1) 42 printBook(book2) 43 } 以上代码运行执行结果: book title 小陈的幸福生活~ book author 小陈 book address 东京有点热 book mobile 110 book publisher 日本???? ------------------------------------ book title 小兔子要搞事情 book author 帅兔子~ book address 中国~日本省 book mobile 110 book publisher ???? ------------------------------------ 结构体指针你可以定义指向结构体的指针类似于其他指针变量,格式如下: var struct_pointer *Books
以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前: struct_pointer = &book; 使用结构体指针访问结构体成员,使用 "." 操作符: struct_pointer.title; 接下来让我们使用结构体指针重写以上实例,代码如下: 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 //结构体 8 type Books struct { 9 //结构体中的字段及字段对应的数据类型 10 title string 11 author string 12 address string 13 mobile int64 14 publisher string 15 16 } 17 18 //用于打印结构体的自定义函数 19 func printBook(book *Books){ 20 fmt.Printf("book title %s \n", book.title) 21 fmt.Printf("book author %s \n", book.author) 22 fmt.Printf("book address %s \n", book.address) 23 fmt.Printf("book mobile %d \n", book.mobile) 24 fmt.Printf("book publisher %s \n", book.publisher) 25 fmt.Println("------------------------------------") 26 27 } 28 29 func main(){ 30 //实例化结构体并赋值,分别给每个字段赋值 31 book := Books{} 32 book.title = "Golang大战Python" 33 book.author = "来自火星的大佬~" 34 book.address = "可能是来自火星的吧~" 35 book.mobile = 13843811011 36 book.publisher = "????" 37 38 //打印赋值以后的信息 39 printBook(&book) 40 } 以上代码运行执行结果: book title olang大战Python book author 来自火星的大佬~ book address 可能是来自火星的吧~ book mobile 13843811011 book publisher ???? ------------------------------------
|
请发表评论