...

Callwoola

大雄'blog

Home 主页 Blog 博客 Tag标签 GitHub开源 about me关于我


golang 数据结构

说的是数据结构,其实我主要想说的是结构体

首先我想说下,大家可能认为go是一个面向对象的语言,其实不是的 go 是一个面向过程的语言。

数据结构个人认为在学习 golang 的过程中尤为重要

定义结构体


// 结构体定义需要使用 type 和 struct 语句。
// struct 语句定义一个新的数据类型,结构体有中一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:

type struct_variable_type struct {
   member definition;
   member definition;
}

一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:

variable_name := structure_variable_type {value1, value2}

访问结构体成员

结构体类型变量使用struct关键字定义,实例如下:

package main

import "fmt"
// 定义一个 book 结构数据
type Books struct {
   title string
   subject string
   book_id int
}

func main() {
   // malloc memony...
   var Book1 Books        /* 声明 Book1 为 Books 类型 */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* 打印 Book1 信息 */
   fmt.Printf( "Book 1 title : %s\n", Book1.title)
   fmt.Printf( "Book 1 subject : %s\n", Book1.subject)
   fmt.Printf( "Book 1 book_id : %d\n", Book1.book_id)
}

结构体指针

你可以定义指向结构体的指针类似于其他指针变量,格式如下:

var struct_pointer *Books
// struct_pointer 成为一个 Books 的指针变量

以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前:

struct_pointer = &Book1;

使用结构体指针访问结构体成员,使用 "." 操作符:

struct_pointer.title;

接下来让我们使用结构体指针重写以上实例,代码如下:

package main

import "fmt"

type Books struct {
   title string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* Declare Book1 of type Book */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* 打印 Book1 信息 */
   printBook(&Book1)

}
func printBook( book *Books ) {
   // 使用指针类型访问数据, 避免传递参数的时候额外产生内存消耗
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}
  • 文档信息:
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 发表日期: 2017-03-1212:50:14+0800
  • 更多内容:
  • Feed订阅:
相关内容:

disqus评论区:

0