`
sillycat
  • 浏览: 2539926 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Golang(4)Struct Type and Object Oriented

 
阅读更多

Golang(4)Struct Type and Object Oriented

2.4 Struct Type
type person struct {
     name string
     age int
}

var P person
P.name = “sillycat”
P.age = 32

P := person{“Kiko”, 18}
P := person{age:24, name:”Kiko"}

P is a pointer *person
P := new(person)

Compare the age function
return value will be the older person and the age difference
fund Older(p1, p2 person) (person, int) {
     if p1.age > p2.age {
          return p1, p1.age - p2.age
     }
     return p2, p2.age-p1.age
}

var tom person
tom.name, tom.age = “Tom”, 18

tb_Older, tb_diff := Older(tom, bob)

struct hidden property
Something like extend based Class

type Human struct {
     name string
     age int
     weight int
}

type Student struct{
     Human // all the properties will be in this struct then
     speciality string
}

mark:=Student{Human{“Mark”, 26,120}, “Computer”}
mark.age, mark.weight

mark.Human = Human{“Marcus”, 55, 220}
mark.Human.age = 1

Define other Type
type Skills []string

type Student struct {
     Human          //hidden property
     Skills             //hidden property
     int                  //hidden property
     speciality string
}

jane := Student{Human:Human{“Jane”, 35,100}, speciality:”biology"}
jane.Skills = []string{“anotomy”}
jane.Skills = append(jane.Skills, “physics”, “golang”)
jane.int = 3

2.5 Object Oriented
method

Old way is struct and func calculate the area
type Rectangle struct {
     width, height float64
}

fund area(r Rectangle) float64{
     return r.width*r.height
}

Method area() will belong to Rectangle, A method is a function with an implicit first argument, called a receiver.

func (r ReceiverType) funcName(parameters) (results)

type Rectangle struct {
     width, height float64
}
type Circle struct {
     radius float64
}
func (r Rectangle) area() float64{
     return r.width*r.height
}
func (c Circle) area() float64{
     return c.radius * c.radius * math.Pi
}

Alias for the Type/ Customer Type
type ages int
type months map[string]int

Pointer as Receiver
when you want to change the value
func(b *Box)setColor(c Color){
     …snip...
}

method extension
type Human struct{
     name string
     ..snip...
}

type Student struct{
     Human
     school string
}

type Employee struct {
     Human
     company string
}

func (h Human) hi(){
     …snip...
}

mark :=Student…snip…
sam := Emloyee…snip…
mark.hi()
sam.hi()

Override the method
func (e Employee) hi(){
     ..snip...
}

2.6 Interface
…snip...


References:
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/02.4.md

Golang1 ~ 3
http://sillycat.iteye.com/blog/2037798
http://sillycat.iteye.com/blog/2047158
http://sillycat.iteye.com/blog/2052936

分享到:
评论

相关推荐

    mysql表里面的字段转换成golang的struct

    把mysql表里面的字段转换成golang的struct,可以再orm里面使用

    golang struct 自动生成工具

    https://github.com/whr-helen/go-struct-auto 自动构建工具使用 安装包命令:go get github.com/whr-helen/go-struct-auto 注释:参数信息 -host host改为自己数据库的地址(默认127.0.0.1) -port port改为...

    golang中struct和[]byte的相互转换示例

    在Golang编程语言中,有时我们需要将结构体(`struct`)与字节切片(`[]byte`)之间进行转换,这在处理网络数据传输、序列化或反序列化等场景中非常常见。本文将详细介绍如何在Golang中实现`struct`到`[]byte`以及`...

    golang中struct和interface的基础使用教程

    本文主要给大家介绍了关于golang中struct和interface的相关内容,是属于golang的基本知识,下面话不多说了,来一起看看详细的介绍吧。 struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套...

    Go-Faker会根据您的Go(Golang)Struct生成一个假数据

    type User struct { ID int Username string Email string Password string Birthday time.Time } ``` 然后,你可以使用Go-Faker库来生成与这个结构体对应的假数据: ```go import ( "github....

    Go-SQL2Struct一款根据sql语句自动生成golang结构体的chrome插件

    SQL2Struct是一款对golang开发者友好的chrome插件,根据在mysql中创建数据表的sql语句,自动生成golang中的struct,在golang开发者使用诸如gorm之类的框架时,可以很好的把mysql中的数据表与orm的结构体关联起来。

    golang如何使用struct的tag属性的详细介绍

    type Person struct { Name string `json:"name"` Age int `json:"age"` } ``` 在这个例子中,`Person` 结构体有两个字段:`Name` 和 `Age`。每个字段后面的 `json:"name"` 和 `json:"age"` 就是所谓的 `tag`。在...

    golang struct 实现 interface的方法

    `struct`是Golang中用于组合多个字段的数据类型,它可以包含各种不同的数据类型,如整型、字符串、指针等。另一方面,`interface`是一组方法的集合,它定义了一个行为规范。当一个类型实现了接口中所有的方法,我们...

    快速将mysql指定数据库或表生成golang struct和表的常用方法集代码的工具.zip

    【标题】"快速将mysql指定数据库或表生成golang struct和表的常用方法集代码的工具.zip" 提供了一个方便的解决方案,它允许开发者通过Go语言来自动化地将MySQL数据库中的表结构转换为Golang的structs,并生成与之...

    db2struct:将mysql表转换为golang结构

    db2struct软件包从给定的数据库表中生成可用的golang结构,以用于.go文件。 通过从数据库中读取有关列结构的详细信息,db2struct生成具有所需列名,数据类型和注释的go兼容结构类型。 生成的数据类型包括对可为空...

    Golang学习笔记(六):struct

    在Golang中,我们可以使用`type`关键字来声明一个新的struct类型。例如,定义一个`person`类型的struct,包含`name`和`age`两个字段: ```go type person struct { name string age int } ``` 初始化struct有两种...

    复印机:golang复印机,将值从struct复制到struct等

    type User struct { Name string Role string Age int32 // Explicitly ignored in the destination struct. Salary int } func ( user * User ) DoubleAge () int32 { return 2 * user . Age } // Tags in ...

    awesome-go-datastruct:golang的DataStruct

    数据结构(go语言实现)本项目是由一个在校本科生做的,所以文档方面,英文不会有了,但是中文文档会尽力写的详细一些,希望大佬们觉得不错的话可以多多支持。这个项目中会有那些数据结构呢?单向链表(LinkedList)...

    xm2struct:将 xml 转换为 golang 结构的转换器

    `xm2struct`工具正是为此目的设计的,它是一个将XML转换为Golang结构体的转换器。 `xm2struct`的工作原理是解析XML文档,分析其元素和属性,然后生成相应的Golang结构体定义。这对于处理XML数据的Go程序员来说非常...

    开源项目-yourheropaul-inj.zip

    开源项目-yourheropaul-inj.zip,inj – Idiomatic dependency injection for Golang with struct- and function-oriented provisioning

    国密加密 sm4 sm2 java python golang

    国密加密解密 sm4 sm2 的java python golang实现,java和python,golang的有一定区别,需要修改点东西才可以实现。 SM4Key = ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 16)) ...

    Packt.Learn.Data.Structures.and.Algorithms.with.Golang.1789618509.rar

    《Learn Data Structures and Algorithms with Golang》是一本专注于使用Golang语言学习数据结构和算法的电子书,旨在帮助读者深入理解这两个编程领域的核心概念。Golang,也被称为Go语言,是由Google开发的一种静态...

    dynamic-struct:Golang软件包,用于在运行时编辑结构的字段并将结构映射到其他结构

    Golang动态结构包动态结构提供了在运行时动态扩展或合并现有已定义结构或提供全新结构的可能性。 主要特点: 在运行时构建全新的结构在运行时扩展现有结构在运行时合并多个结构在结构中添加新字段从结构中删除现有...

    有趣的go struct标记表达式语法,用于字段验证等。-Golang开发

    go-tagexpr用于字段验证等的有趣的go struct标签表达式语法。使用验证器:支持结构标签表达式的功能强大的验证器绑定:一个功能强大的HTTP请求参数bind go-tagexpr用于字段验证的有趣的go结构标签表达式语法等。使用...

Global site tag (gtag.js) - Google Analytics