如下代码:
go语言中的struct无处不在
//第二种实例化方式,顺序形式
c2 := Course{"scrapy", 100, "https://www.imooc.com"}
fmt.Println(c2)
//3.如果一个指向结构体的指针,通过结构体指针获取对象的值
c3 := &Course{"tornado", 100, "https://www.imooc.com"}
fmt.Printf("%T\n", c3)
fmt.Println((*c3).name, (*c3).price, (*c3).url)
fmt.Println(c3.name, c3.price, c3.url) //这里是go语言的一个语法糖
//4.结构体的0⃣️值,go语言会默认给每个字段采用默认值
c4 := Course{}
fmt.Println(c4.price)
//5.多种方式零值初始结构体
var c5 Course = Course{}
var c6 Course
var c7 *Course = new(Course)
fmt.Println(c5.price)
fmt.Println(c6.price)
fmt.Println(c7.price)
//6.结构体是值类型
c8 := Course{"scrapy", 120, "https://www.imooc.com"}
c9 := c8
fmt.Println(c8)
fmt.Println(c9)
c8.price = 200
fmt.Println(c8)
fmt.Println(c9)
//7.结构体占用内存的大小,可以使用sizeof来查看对象占用的类型
fmt.Println(unsafe.Sizeof(1))
//go语言的string的本质,其实string是一个结构体
fmt.Println(unsafe.Sizeof("helooslfjdlksfjsdlfkjs"))
//8.slice的大小
type slice struct {
array unsafe.Pointer
len int
cap int
}
s1 := []string{"math", "chinese", "englist"}
fmt.Println(unsafe.Sizeof(s1))
m1 := map[string]string{
"bobby": "math",
"bobby2": "chinese",
"bobby3": "ebgkust"}
fmt.Println(unsafe.Sizeof(m1))