7.1 结构体定义

本篇学习 Go 结构体的定义、初始化与字段读写,并能看懂最基础的方法定义。

字数 592 字

结构体定义

概念说明

结构体(struct)用于把多个不同类型的字段组织成一个整体。
它常用于描述“一个对象”的完整信息,比如学生、订单、商品等。
可以先把它理解成“数据模板”:先定义模板,再创建具体数据。

语法/规则

  1. 使用 type 名称 struct { ... } 定义结构体类型。
  2. 结构体字段由“字段名 + 类型”组成,字段名首字母大写表示可导出。
  3. 结构体实例可以通过字面量初始化。
  4. 字段可通过 实例.字段 读取和修改。
  5. 可以为结构体绑定方法,语法是 func (接收者 结构体类型) 方法名(...)
  6. func (s Student) PrintInfo() 中,(s Student) 是接收者,PrintInfo 是方法名。

语法模板

1
2
3
4
5
6
7
8
type 结构体名称 struct {
	字段1 类型
	字段2 类型
}

func (接收者变量 结构体名称) 方法名(参数列表) {
	// 方法体
}

定义、初始化与字段修改示例

先看最容易卡住的一行:

  • func (s Student) PrintInfo()
  • (s Student):接收者,表示这个方法属于 Students 是当前实例的临时名字。
  • PrintInfo:方法名,调用时写 student.PrintInfo()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import "fmt"

type Student struct {
	Name string
	Age  int
}

func (s Student) PrintInfo() {
	fmt.Printf("name:%s age:%d\n", s.Name, s.Age)
}

func main() {
	student := Student{
		Name: "阿斌",
		Age:  21,
	}

	student.Name = "阿斌知道"
	student.PrintInfo()
}

输出结果:

1
name:阿斌知道 age:21

常见错误

  1. 字段名和类型顺序写反(写成 string Name),会导致语法错误。
  2. (s Student) 当成普通函数参数,误写成 PrintInfo(student) 这种调用方式。
  3. 初始化时字段名写错或漏写逗号,导致编译失败。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)