You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# 结构体
结构体是一个复合类型,用于表示一组数据。
结构体由一系列属性组成,每个属性都有自己的类型和值。
## 初始化
```go // 定义一个结构体(类型),每个结构体包含 name、age、hobby 三个元素 type Person struct { name string age int hobby []string }
//方式1:先后顺序 var p1 = Person{"lihui", 22, []string{"唱跳", "rap"}} fmt.Println(p1.name, p1.age, p1.hobby)
//方式2:关键字 var p2 = Person{name: "lihui", age: 22, hobby: []string{"饺子", "馒头"}} fmt.Println(p2.name, p2.age, p2.hobby)
//方式3:先声明再赋值 var p3 Person p3.name = "lihui" p3.age = 18 p3.hobby = []string{"唱跳", "篮球"} fmt.Println(p3.name, p3.age, p3.hobby)
```
## 结构体指针
```go type Person struct { name string age int }
// 初始化结构体(创建一个结构体对象) p1 := Person{"lihui", 18} fmt.Println(p1.name, p1.age)
// 初始化结构体指针 // var p2 *Person = &Person{"lihui", 18} p2 := &Person{"lihui", 18} fmt.Println(p2.name, p2.age)
var p3 *Person = new(Person) p3.name = "lihui" p3.age = 18
fmt.Println(p3.name, p3.age) ```
## 赋值拷贝
其实本质上都拷贝了,只不过由于数据存储方式的不同,导致拷贝的有些是数据,有些是内存地址(指针)。
但是:
- 感觉拷贝:字符串、数组、整型等。 - 感觉不拷贝:map、切片。
## 标签
没啥用,给结构体的元素一个注释
# 函数
可以把函数当做一个代码块,用于实现某个功能。并且提高代码的重用性和可读性。
```go func 函数名(参数) 返回值 { 函数体 } ```
关于函数名需要注意:函数名只能是字母数字下划线组合且数字不能开头,即驼峰式命名
# 接口
|