int, float32等是系统的数据类型, 可以直接使用这些数据类型声明变量
而结构体是自定义的数据类型, 我们定义了某结构体后, 才可使用某结构体声明变量
数组是储存相同类型的数据集合
结构体是可以存储不同类型的数据集合, 描述的是一种事物
比如一本书: 有 作者, 书名, 价格, 书id 等信息, 可以使用结构体来描述它
结构体是值类型, 所以要修改结构体, 则需要传入其指针
结构体中可以定义多个属性, 方法(和函数不同)
结构体也可以嵌套别的结构体
结构体相当于java的class类型, go中没有class类型
定义结构体:
type 结构体名 struct {...}
type Book struct {
book_name string
book_author string
book_price float32
book_id int
}
结构体是我们定义的一种新的数据类型
如上所示Book结构体类型包含了string, float32, int三种不同的数据类型
结构体是我们定义的新的一种数据类型, 所以可以使用这种类型声明变量
声明变量:
var a int = 1 // int型变量
var b int = 2
var book1 Book // Book型变量
var book2 Book
结构体的使用:
package main
import "fmt"
func main() {
// 定义结构体
type Book struct {
book_name string
book_author string
book_price float32
book_id int
}
// 声明结构体变量, 并给结构体中的每一项赋值(以这种形式赋值: 必须包括所有项)
var book1 Book = Book{"天龙八部", "金庸", 44.9, 666666}
// 使用键值对的形式, 指定给某些项赋值, 可以不用全部赋值
var book2 Book = Book{book_name:"笑傲江湖", book_author:"金庸"}
// 给结构体中的单独一项赋值
book1.book_id = 654321
fmt.Printf("书1的作者: %s\n", book1.book_author)
fmt.Printf("书1的价格: %.1f\n", book1.book_price)
fmt.Printf("书1的id: %d\n\n", book1.book_id)
fmt