Go基础学习记录 - Go指南 - 结构体

{app.params.name}}{app.params.name}}{app.params.name}}

环境

go version go1.10.1 darwin/amd64

结构体

一个结构体(struct)就是一个字段的集合。(而type声明就是定义类型的)。详细的介绍可以看下面的实例

package main

import "fmt"

// Rectangle 长方形
type Rectangle struct {
  width  int
  height int
}

func main() {
  fmt.Println(Rectangle{3, 4})
}


运行后输出如下

{3 4}

结构体字段

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

package main

import "fmt"

// Rectangle 长方形
type Rectangle struct {
  width  int
  height int
}

func main() {
  rectangle := Rectangle{3, 4}
  rectangle.width = 4
  fmt.Println(rectangle.width)
}


运行后输出如下

4

结构体指针

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

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

package main

import "fmt"

// Rectangle 长方形
type Rectangle struct {
  width  int
  height int
}

func main() {
  rectangle := Rectangle{3, 4}
  p := &rectangle
  p.width = 1e9
  fmt.Println(rectangle)
}


运行后输出如下

{1000000000 4}


结构体文法

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

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

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

package main

import "fmt"

// Rectangle 长方形
type Rectangle struct {
  width  int
  height int
}

var (
  a = Rectangle{3, 4}     // Rectangle类型
  b = Rectangle{width: 1} // height:0 是隐含的
  c = Rectangle{}         // width:0和height:0是隐含的
  d = &Rectangle{5, 6}    // &Rectangle类型
)

func main() {
  fmt.Println(a, b, c, d)
}


运行后结果如下

{3 4} {1 0} {0 0} &{5 6}

 

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/16



版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/16