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
- 浏览: 2539956 次
- 性别:
- 来自: 成都
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
相关推荐
把mysql表里面的字段转换成golang的struct,可以再orm里面使用
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和interface的相关内容,是属于golang的基本知识,下面话不多说了,来一起看看详细的介绍吧。 struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套...
type User struct { ID int Username string Email string Password string Birthday time.Time } ``` 然后,你可以使用Go-Faker库来生成与这个结构体对应的假数据: ```go import ( "github....
SQL2Struct是一款对golang开发者友好的chrome插件,根据在mysql中创建数据表的sql语句,自动生成golang中的struct,在golang开发者使用诸如gorm之类的框架时,可以很好的把mysql中的数据表与orm的结构体关联起来。
type Person struct { Name string `json:"name"` Age int `json:"age"` } ``` 在这个例子中,`Person` 结构体有两个字段:`Name` 和 `Age`。每个字段后面的 `json:"name"` 和 `json:"age"` 就是所谓的 `tag`。在...
`struct`是Golang中用于组合多个字段的数据类型,它可以包含各种不同的数据类型,如整型、字符串、指针等。另一方面,`interface`是一组方法的集合,它定义了一个行为规范。当一个类型实现了接口中所有的方法,我们...
【标题】"快速将mysql指定数据库或表生成golang struct和表的常用方法集代码的工具.zip" 提供了一个方便的解决方案,它允许开发者通过Go语言来自动化地将MySQL数据库中的表结构转换为Golang的structs,并生成与之...
db2struct软件包从给定的数据库表中生成可用的golang结构,以用于.go文件。 通过从数据库中读取有关列结构的详细信息,db2struct生成具有所需列名,数据类型和注释的go兼容结构类型。 生成的数据类型包括对可为空...
在Golang中,我们可以使用`type`关键字来声明一个新的struct类型。例如,定义一个`person`类型的struct,包含`name`和`age`两个字段: ```go type person struct { name string age int } ``` 初始化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 ...
数据结构(go语言实现)本项目是由一个在校本科生做的,所以文档方面,英文不会有了,但是中文文档会尽力写的详细一些,希望大佬们觉得不错的话可以多多支持。这个项目中会有那些数据结构呢?单向链表(LinkedList)...
`xm2struct`工具正是为此目的设计的,它是一个将XML转换为Golang结构体的转换器。 `xm2struct`的工作原理是解析XML文档,分析其元素和属性,然后生成相应的Golang结构体定义。这对于处理XML数据的Go程序员来说非常...
开源项目-yourheropaul-inj.zip,inj – Idiomatic dependency injection for Golang with struct- and function-oriented provisioning
国密加密解密 sm4 sm2 的java python golang实现,java和python,golang的有一定区别,需要修改点东西才可以实现。 SM4Key = ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 16)) ...
《Learn Data Structures and Algorithms with Golang》是一本专注于使用Golang语言学习数据结构和算法的电子书,旨在帮助读者深入理解这两个编程领域的核心概念。Golang,也被称为Go语言,是由Google开发的一种静态...
Golang动态结构包动态结构提供了在运行时动态扩展或合并现有已定义结构或提供全新结构的可能性。 主要特点: 在运行时构建全新的结构在运行时扩展现有结构在运行时合并多个结构在结构中添加新字段从结构中删除现有...
go-tagexpr用于字段验证等的有趣的go struct标签表达式语法。使用验证器:支持结构标签表达式的功能强大的验证器绑定:一个功能强大的HTTP请求参数bind go-tagexpr用于字段验证的有趣的go结构标签表达式语法等。使用...