解析Go语言编程中的struct结构

 更新时间:2015年10月28日 15:21:39   投稿:goldensun  
这篇文章主要介绍了Go语言编程中的struct结构,是Go语言入门学习中的基础知识,需要的朋友可以参考下

struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等!
struct的申明

复制代码 代码如下:

package main

import "fmt"

type Person struct {
 Age  int
 Name string
}

func main() {
 //初始化两种
 a := Person{}
 a.Age = 2
 a.Name = "widuu"
 fmt.Println(a)
 b := Person{
  Age:  24,
  Name: "widuu",
 }
 fmt.Println(b)
}


go指针操作
如下我们要对数值进行改变,先要取内存地址,然后再内存地址上改变他的引用
复制代码 代码如下:

package main

import "fmt"

type Person struct {
 Age  int
 Name string
}

func main() {
 b := &Person{
  Age:  24,
  Name: "widuu",
 }
 fmt.Println(b)
 G(b)
 fmt.Println(b)
}

func G(per *Person) {
 per.Age = 15
 fmt.Println(per)
}


匿名结构
(1)匿名内部结构的使用
复制代码 代码如下:

 func main() {
  a := struct {
   name string
   Age  int
  }{
   name: "widuu",
   Age:  19,
  }
  fmt.Println(a)
}

复制代码 代码如下:

package main

import "fmt"

type Person struct {
 Age    int
 Name   string
 Member struct {
  phone, City string
 }
}

func main() {
 a := Person{Age: 16, Name: "widuu"}
 a.Member.phone = "13800000"
 a.Member.City = "widuuweb"
 fmt.Println(a)
}


(2)匿名类值不需要数据名称、在赋值的时候两个结构必须是一样的
复制代码 代码如下:

package main

import "fmt"

type Person struct {
 string
 int
}

func main() {
 a := Person{"joe", 19}
 var b Person
 b = a
 fmt.Println(b)
}


嵌入结构
(1).嵌入式结构模拟其他程序有个继承的概念,只是概念哦
复制代码 代码如下:

package main

import "fmt"

type Person struct {
 Name string
 Age  int
}
type student struct {
 Person
 work string
}

func main() {
//实例化时 如果嵌入式的结构没有数据结构的名字 就默认是类型名字Person:Person
 a := student{Person: Person{Name: "widuu", Age: 19}, work: "IT"}
 fmt.Println(a)
}


(2).结构方法
复制代码 代码如下:

package main

import "fmt"

type A struct {
 Name string  //这个是共有的大写 如果是小写的name就包内可以用私有的
}
type B struct {
 Name string
}

func main() {
 a := A{}
 b := B{}
 a.print()
 b.print()
}
//通过type不同,来取相同的方法的名称
func (a *A) print() {
 fmt.Println("A")
}

func (b *B) print() {
 fmt.Println("B")
}

相关文章

  • Go语言应该什么情况使用指针

    Go语言应该什么情况使用指针

    go语言的指针类型和C/C++的指针类型用法是一样的,那么Go语言应该什么情况使用指针,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-07-07
  • Golang Fasthttp选择使用slice而非map 存储请求数据原理探索

    Golang Fasthttp选择使用slice而非map 存储请求数据原理探索

    本文将从简单到复杂,逐步剖析为什么 Fasthttp 选择使用 slice 而非 map,并通过代码示例解释这一选择背后高性能的原因,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • 基于Golang实现YOLO目标检测算法

    基于Golang实现YOLO目标检测算法

    目标检测是计算机视觉领域的重要任务,它不仅可以识别图像中的物体,还可以标记出物体的位置和边界框,YOLO是一种先进的目标检测算法,以其高精度和实时性而闻名,本文将介绍如何使用Golang实现YOLO目标检测算法,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • go语言实现处理表单输入

    go语言实现处理表单输入

    本文给大家分享的是一个使用go语言实现处理表单输入的实例代码,非常的简单,仅仅是实现了用户名密码的验证,有需要的小伙伴可以自由扩展下。
    2015-03-03
  • go slice不同初始化方式性能及数组比较详解

    go slice不同初始化方式性能及数组比较详解

    这篇文章主要为大家介绍了go slice不同初始化方式性能及数组比较示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 基于Go语言实现类似tree命令的小程序

    基于Go语言实现类似tree命令的小程序

    tree 命令是一个小型的跨平台命令行程序,用于递归地以树状格式列出或显示目录的内容。本文将通过Go语言实现类似tree命令的小程序,需要的可以参考一下
    2022-10-10
  • 详解Go中处理时间数据的方法

    详解Go中处理时间数据的方法

    在许多场合,你将不得不编写必须处理时间的代码。在Go中处理时间数据需要你从Go标准库中导入 time 包。这个包有很多方法和类型供你使用,但我选取了最常用的方法和类型,并在这篇文章中进行了描述,感兴趣的可以了解一下
    2023-04-04
  • 用gomock进行mock测试的方法示例

    用gomock进行mock测试的方法示例

    go-mock是专门为go语言开发的mock库,该库使用方式简单,支持自动生成代码,这篇文章主要介绍了用gomock进行mock测试的方法示例,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Go数组的具体使用

    Go数组的具体使用

    Go语言中的数组是一种固定长度的数据结构,它包含一组按顺序排列的元素,每个元素都具有相同的类型,本文主要介绍了Go数组的具体使用,包括声明数组、初始化数组、访问数组元素等,感兴趣的可以了解下
    2023-11-11
  • 详解Golang中SQLX库的高级操作

    详解Golang中SQLX库的高级操作

    sqlx是Golang中的一个知名三方库,其为Go标准库database/sql提供了一组扩展支持,下面就来和大家分享一下SQLX库的高级操作吧,希望对大家有所帮助
    2023-06-06

最新评论