# GO 数组、指针、结构体
### 数组
```go
func main() {
// 指定长度的数组
var Fruit_set = [3]string {"Cherry","Banana","Apple"}
// 不确定长度的数组
var Food_set = [...] string{"cheese","bread","egg thrt","sandwich","salad"}
for _,val :=range Fruit_set{
fmt.Println(val)
}
fmt.Println("")
for _,val :=range Food_set{
fmt.Println(val)
}
}
输出结果:
Cherry
Banana
Apple
cheese
bread
egg thrt
sandwich
salad
```
## 认识指针地址和指针类型
每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go 语言中使用&符放在变量前面对变量进行“取地址”操作。
For example:
指针就像我们房子的地址,快递员只需要知道包裹上的地址,就能把包裹送达。
代码示例:
```go
func main(){
var pack = "Mr.Potato" //定义一个变量
fmt.Println("包裹的主人: ",pack)
fmt.Println("包裹主人的地址: ",&pack) // & 取地址值
}
输出结果:
包裹的主人: Mr.Potato
包裹主人的地址: 0xc00004e1c0
```
**声明指针 & 解引用**
注意区分 * 和 & 两个符号。
```go
var p *string
p = &pack
fmt.Println("p指针指向pack的地址 ",p)fmt.Println("p指针指引了pack的值:",*p)
输出结果:
p指针指向pack的地址 0xc00004e1c0
p指针指引了pack的值: Mr.Potato
```
注意步骤细节:
声明一个指针 注意:指针是存储一个变量的地址
注意:指针是存储一个变量的地址 所以这里要 & 取地址符号
要获得指针指向地址的值,我们可以使用*运算符 俗称解引用:
## 结构体
```go
type Person struct { //定义结构体
name string
hight float32
age int
gender string
}
func main(){
....
}
```
### 访问结构体成员
```go
type Person struct { //定义结构体
name string
hight float32
age int
gender string
}
func main(){
var person Person //声明为Person 结构体类型
person.age = 21
person.name = "Nl"
person.hight = 178
person.gender = "male"
fmt.Println("姓名:",person.name)
fmt.Println("年龄:",person.age)
fmt.Println("身高:",person.hight)
fmt.Println("性别:",person.gender)
}
输出结果:
姓名: Nl
年龄: 21
身高: 175.8
性别: male
```
有疑问加站长微信联系(非本文作者))