Learn Golang In Day 9

笑吧小鸟 · · 273 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系

本文来自:简书

感谢作者:笑吧小鸟

查看原文:Learn Golang In Day 9

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:812540095

273 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传