golang 结构体笔记

一、概念

结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。

二、结构体声明及使用

// 声明结构体
type Employee struct {
    ID   int
    Name string
}

func main() {
    // 结构体实例化
    emp := Employee{ID: 1, Name: "Frod"}
    // 匿名字段实例化
    emp2 := Employee{1, "Frod2"}
    fmt.Println(emp)
    fmt.Println(emp2)
}

三、聚合结构

golang没有继承的概念, 推崇的是类聚合

type Address struct {
    Province string
    City     string
    Detail   string
}

type Employee struct {
    ID      int
    Name    string
    Address Address
}

func main() {
    emp := Employee{
        ID:   1,
        Name: "Frod",
        Address: Address{
            Province: "浙江省",
            City:     "杭州市",
            Detail:   "余杭区仓前镇",
        },
    }
    fmt.Println(emp)
}

四、匿名结构体

func main() {

    emp := struct {
        ID   int
        Name string
    }{
        ID:   1001,
        Name: "Frod",
    }

    fmt.Println(emp)
}

五、结构方法

type Employee struct {
    ID   int
    Name string
}

func main() {
    emp := Employee{1, "Frod"}
    fmt.Println(emp.getName())
}

func (this *Employee) getName() string {
    return this.Name
}
时间: 2024-10-19 06:53:44

golang 结构体笔记的相关文章

golang 结构体中的匿名接口

golang 结构体中的匿名接口 代码示例 golang 中,可以给结构体增加匿名field,可参考 unknwon 大神的书. 匿名字段和内嵌结构体 但,golang同时也可以给结构体定义一个匿名interface field,用法: 标准库 sort 中,有下面的写法: type Interface interface { Len() int Less(i, j int) bool Swap(i, j int) } type reverse struct { Interface } func

golang结构体json的时间格式化解决方案

最近开发项目时候发现一个结构体的Json转换的时间格式问题. 即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法.从我们习惯来说,更喜欢希望的是 1993-01-01 20:08:23这种格式. 重新复现代码如下: package main import (     "time"     "encoding/json" ) type Student struct {     Name string     `json:&

Golang 结构体(struct)

前言 编程就是要通过编程语言表达给计算机,让计算机帮助我们达到解决现实生活问题的目的! 不管是Python还是Golang...这些编程语言,由于历史原因.遇到的痛点.解决的问题不同,导致语法追求.本身特性不同.但是遇到的问题.解决问题的思想是一致的. 如果想要开发1款游戏,游戏中的人物不仅有角色属性.也有交易.攻击这些作为. 单纯得使用数据类型int.string ..函数去表示1个人物,复杂不利于代码灵活.扩展,于是想办法如何把数据和方法集合到1块进行表示. Go语言中没有“类”的概念,也不

golang 结构体的嵌入类型和接口

结构体的嵌入类型 1.嵌入结构体1 package main import "fmt" type Person struct { name string } type Student struct { class int person Person         //定义person 类型为Person } func main(){ s := Student{1,Person{"xiaoming"}} fmt.Println("name :",

golang 结构体嵌入和匿名成员

考虑一个二维的绘图程序,提供了一个各种图形的库,例如矩形.椭圆形.星形和轮形等几 何形状.这里是其中两个的定义 type Circle struct { X, Y, Radius int } type Wheel struct { X, Y, Radius, Spokes int } 一个Circle代表的圆形类型包含了标准圆心的X和Y坐标信息,和一个Radius表示的半径信 息.一个Wheel轮形除了包含Circle类型所有的全部成员外,还增加了Spokes表示径向辐条的 数量.我们可以这样创

[Go] golang结构体成员与函数类型

package main import ( "fmt" ) //定义一个类型 type tsh struct { //定义成员,类型是func() string test func() string } //定义一个函数,获取tsh类型 func New(fn func() string) *tsh { return &tsh{ test: fn, } } func cre() string { return fmt.Sprintf("%s,来了", &qu

Golang 结构体和[]byte相互转换

Golang数据结构与[]byte的相互转换,需要了解两个数据结构具体的底层实现,然后构造相同的数据结构进行转换即可. package main import ( "fmt" "unsafe" ) type Data struct { a,b int32 c map[string]interface{} } type SliceMock struct { addr uintptr len int cap int } func main() { d := Data{

golang结构体转map

package main import ( "encoding/json" "fmt" "reflect" "time" ) type Body struct { Person1 string Age int Salary float32 } func Struct2Map(obj interface{}) (data map[string]interface{}, err error) { data = make(map[s

golang(07)结构体介绍

golang支持面向对象的设计,一般支持面向对象的语言都会有class的设计,但是golang没有class关键字,只有struct结构体.通过结构体达到类的效果,这叫做大成若缺,其用不弊. struct简介 在使用struct之前,先介绍golang的一个特性,golang允许用户将类型A定义为另一种类型B,并为类型B添加方法. 1234 type Integer int func (a Integer) Less (b Integer) bool{ return a < b} 我们将int定