Learn Golang In Day 9
简介
结构体是自定义的数据结构
定义结构体
package main
import "fmt"
type Books struct {
title string
author string
subject string
bookid int
}
func main() {
//创建一个结构体
fmt.Println(Books{"Golang","菜鸟教程","Go语言",6453007})
// key => value 方式赋值
fmt.Println(Books{title: "Golang112",author: "",subject: "subject 哈哈", bookid:787823})
// 字段可以省略
fmt.Println(Books{subject: "subject 哈哈", bookid:787823})
}
``**
### 访问结构体成员
---
package main
import "fmt"
type Books struct {
title string
author string
subject string
bookid int
}
func main() {
var Book1 Books
var Book2 Books
/* Book1 描述 */
Book1.title = "Book1 标题"
Book1.author = "作者"
Book1.subject = "课程"
Book2.bookid = 1234
fmt.Println(Book1, Book2)
}
### 结构体指针
---
- 结构体指针,大体上和C语言没有区别
- 但是,**结构体指针是一个集合,让人无法理解**
package main
import "fmt"
type Books struct {
title string
author string
subject string
bookid int
}
func main() {
/* 第1种方式 */
var Book1 Books = Books{"title1","author1", "subject2", 123}
var ptr *Books = nil
ptr = &Book1
printBook(ptr)
/* 第2种方式 */
Book2 := Books{title: "标题", subject : "subje"}
printBook(&Book2)
}
func printBook(book Books) {
ptr := book
fmt.Printf("func printBook, paramter address is %016x\n", ptr)
fmt.Printf("--------------\n")
fmt.Println(book)
fmt.Printf("--------------\n")
fmt.Printf("title: %s\n", (*book).title)
}
- 执行结果
[Running] go run main.go
func printBook, paramter address is &{00007469746c6531 00617574686f7231 7375626a65637432 000000000000007b}
{title1 author1 subject2 123}
title: title1
func printBook, paramter address is &{0000e6a087e9a298 0000000000000000 0000007375626a65 0000000000000000}
{标题 subje 0}
title: 标题
[Done] exited with code=0 in 0.255860 seconds
网友评论