Go基础(复杂类型):结构体

栏目: Go · 发布时间: 7年前

内容简介:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wd2014610/article/details/80403044

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wd2014610/article/details/80403044

结构体

一个结构体( struct )就是一个字段的集合。

(而 type 的含义跟其字面意思相符。)

下面来写一个简单的例子:

package main

import "fmt"

/**
 * 一个结构体就是一个字段的集合
 */
type Vertex struct {
    X int
    Y float64
}

func main() {
    fmt.Println(Vertex{1,2.31231})
}

输出结果:

{1 2.31231}

一、结构体字段

结构体字段使用点号来访问。

package main

import "fmt"

type Vertex2 struct {
    X int
    Y int
}

func main() {
    //在这里给结构体赋值,x=6,y=3
    v := Vertex2{6, 3}
    //这边输出的结果是6,3
    fmt.Println(v.X, v.Y)
    //这边从新给结构体中的X赋值,X=7
    v.X = 7
    //输出X=7
    fmt.Println(v.X)
}

二、结构体指针

结构体字段可以通过结构体指针来访问。

如果我们有一个指向结构体的指针 p,那么可以通过 (*p).X 来访问其字段 X。不过这么写太啰嗦了,所以语言也允许我们使用隐式间接引用,直接写 p.X 就可以。

package main

import "fmt"

type Vertex3 struct {
    X int
    Y int
}

func main() {
    //给结构体赋值,X=1,Y=3
    v := Vertex3{1, 3}
    //这个是输出实际的结构体的值,所以{1 3}
    fmt.Println(v)
    //将结构体给p做引用,p是一个指向结构体的指针
    p := &v
    //输出结果有引用的结果,有一个&,&{1 3}
    fmt.Println(p)
    //给结构体中的X赋值为1e9,这个表示1后面跟着9个0
    p.X = 1e9
    //输出结果{1000000000 3}
    fmt.Println(v)
}

输出结果:

{1 3}
&{1 3}
{1000000000 3}

三、结构体文法

结构体文法通过直接列出字段的值来新分配一个结构体。

使用 Name: 语法可以仅列出部分字段。(字段名的顺序无关。)

特殊的前缀 & 返回一个指向结构体的指针。

package main

import "fmt"

//定义一个结构体
type Vertex4 struct {
    //在结构体中定义两个变量
    X, Y int
}

var (
    //给X、Y都赋值
    v1 = Vertex4{1, 2}  // has type Vertex
    //给X赋值为1,Y未赋值,默认为0
    v2 = Vertex4{X: 1}  // Y:0 is implicit
    //X、Y都不赋值,默认都为0
    v3 = Vertex4{}      // X:0 and Y:0
    //指针的方式去赋值
    p  = &Vertex4{1, 2} // has type *Vertex
)

func main() {
    fmt.Println(v1, v2, v3, p)
}

好了,这一次的结构体文法就是这样子了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据分析技术白皮书

数据分析技术白皮书

伍海凤、刘鹏、杨佳静、马师慧Sara、李博、Shirley Song、Zinc、李晓艳 / 2016-8-11 / 0

关于数据分析技术白皮书(Analytics Book 中文版),主要内容围绕: 1. 分析(Analytics):网站分析 & APP分析 2. 谷歌分析工具的原理、部署与使用 3. 开源网站分析工具的原理、部署与使用 4. Log日志分析原理 5. 网站分析的维度与指标定义 6. 如何炼成为一个互联网数据分析师 请访问书的数据分析技术白皮书官网“免费”阅......一起来看看 《数据分析技术白皮书》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具