golang之struct

py鱼 py鱼     2022-10-08     366

关键词:

1.用来定义复杂数据结构

2.struct里面可以包含多个字段(属性)

3.struct类型可以定义方法,注意和函数的区分。

4.struct类型是值类型

5.struct类型可以嵌套

6.Go语言没有class类型,只有struct类型

package main

import "fmt"

//声明结构体
type Student struct {
    Name  string
    Age   int
    Score int
}

func main() {
    //struct字段访问,使用“点”访问
    var stu Student
    stu.Name = "yuchao"
    stu.Age = 18
    stu.Score = 99
    fmt.Printf("name=%s age=%d scrore=%d", stu.Name, stu.Age, stu.Score)
}

定义struct的三种形式:

package main

import "fmt"

//声明结构体
//字段名和函数名一样,首字母大写,在包外可以访问
type Student struct {
    Name  string
    Age   int
    Score float32
}

func main() {
    //struct字段访问,使用“点”访问
    var stu Student
    //var stu *Student = new(Student)
    //var stu *Student = &Student{ }
    stu.Name = "yuchao"
    stu.Age = 18
    stu.Score = 99
    //fmt.Println(stu) //默认结构 {yuchao 18 99.1}
    //fmt.Printf("name=%s age=%d scrore=%d", stu.Name, stu.Age, stu.Score)

    var stu1 *Student = &Student{
        Age:  20,
        Name: "chao",
    }

    var stu3 = Student{
        Age:  20,
        Name: "hua",
    }

    fmt.Println(stu1)
    fmt.Println(stu3.Name)
    fmt.Printf("Name:%p\n", &stu.Name)
    fmt.Printf("age:%p\n", &stu.Age)
    fmt.Printf("score:%p\n", &stu.Score)
}
定义结构体

 

var stu Student
var stu *Student = new(Student)
var stu *Student = &Student{ }

struct的内存布局,struct中的所有字段在内存是连续的,布局如下:

 

golang之继承,多重继承(struct)

热乎的代码来了packagemainimport"fmt"/*继承一个结构体嵌到另一个结构体,称作组合匿名和组合的区别如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承如果一个struct嵌套了另一个... 查看详情

golang中结构体struct(代码片段)

前言这里总结的Golang笔记只适合有点编程基础的人看,比如Java往期内容:Golang学习【day1】变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可... 查看详情

golang中结构体struct(代码片段)

前言这里总结的Golang笔记只适合有点编程基础的人看,比如Java往期内容:Golang学习【day1】变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可... 查看详情

golang碎片整理之结构体(代码片段)

...集合,可以用于描述一个实体对象,类似Java中的class,是golang面向对象编程的基础。结构体的概念在软件工程上的旧术语是ADT(抽象数据类型:AbstractDatetype)。在c++它也是存在,并且名字也是struct,在面向对象的编程语言中,跟一... 查看详情

golang之结构体和方法(代码片段)

结构体的定义结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型。每个变量都叫做结构体的成员。其实简单理解,Go语言的结构体struct和其他语言的类class有相等的地位,但是GO语言放弃了包括继承在内的大... 查看详情

学习笔记golang之gorm学习笔记(代码片段)

一、模型定义1.模型定义模型是标准的struct,由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成,如:typeUserstructIDuintNamestringEmail*stringAgeuint8Birthday*time.TimeMemberNumbersql.NullStringActivedAtsql 查看详情

golang:空struct作用(代码片段)

struct可作为占位符,不占用内存.1.利用map实现set:mp:=make(map[string]struct)原理是不用value,用占位符即可.2.channel控制并发,用struct作为信号量:ch:=make(chanstrcuct,1)通过往ch丢入struct控制并发量.3.只包含方法的空结构体也会用到str... 查看详情

我怎么知道golang中struct的长度?

】我怎么知道golang中struct的长度?【英文标题】:Howcaniknowthelengthofstructingolang?【发布时间】:2022-01-0521:33:42【问题描述】:我是Golang的新手,我正在尝试从结构中获取一些属性例如:typeClientstructnamestring//1lastNamestring//2ageuint//3fun... 查看详情

golang中struct和struct区别(代码片段)

struct是Go中的关键字,用于定义结构类型。例如:typeUserstructNamestringAgeintstruct:表示struct类型struct是一个无元素的结构体类型,通常在没有信息存储时使用。优点是大小为0,不需要内存来存储struct类型的值。struct:表示struct类型... 查看详情

golang-struct

Golang-struct  Golang语言面向对象编程说明    1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。    2)Golang没有类(c... 查看详情

golang去获取struct的键和值(代码片段)

查看详情

golang以json格式打印struct(代码片段)

查看详情

golang关于go中的struct

一、关于structstruct是Go中的关键字,用于定义结构类型typeUserstructNamestringAgeintstruct:表示struct类型struct是一种普通数据类型,一个无元素的结构体类型,通常在没有信息存储时使用。优点是作者:踏雪无痕出处:http://www.cnblogs.com... 查看详情

golang中接口interface和struct结构类的分析(代码片段)

再golang中,我们要充分理解interface和struct这两种数据类型。为此,我们需要优先理解type的作用。type是golang语言中定义数据类型的唯一关键字。对于type中的匿名成员和指针成员,这里先不讲,重点讲解interface和struct这两种特殊的... 查看详情

golang中的struct能不能比较

参考技术A可以能,也可以不能可以能,也可以不能T2和T3是不同的结构体,但可以强制转换,所以强转之后可以比较如果成员变量含有不可比较成员变量,即使可以强制转换,也不可以比较可以,也不可以struct必须是可比较的,... 查看详情

golang之结构体(代码片段)

构造函数Go语言的结构体没有构造函数,我们可以自己实现。例如,下方的代码就实现了一个person的构造函数。因为struct是值类型,如果结构体比较复杂的话,值拷贝性能开销会比较大,所以该构造函数返回的是结构体指针类型... 查看详情

golang:struct定义与试用以及内存分析(代码片段)

概述Golang虽然具有OOP的特性,但是并没有类的概念,也没有继承关键字。提供了一个类似于类功能,但是又截然不同的概念:结构体struct。定义有四种定义方式:packagemainimport"fmt"//struct定义typePersonstruct I... 查看详情

golang:struct定义与试用以及内存分析(代码片段)

概述Golang虽然具有OOP的特性,但是并没有类的概念,也没有继承关键字。提供了一个类似于类功能,但是又截然不同的概念:结构体struct。定义有四种定义方式:packagemainimport"fmt"//struct定义typePersonstruct I... 查看详情