一.指针
※fmt.Printf()的动词:
- fmt.Printf("%T",a): 输出指针a的数据类型
- fmt.Printf("%s",a): 输出指针a指向对象的值.
- fmt.Printf("%p",a): 输出指针a存储的内存地址. fmt.Print(a)输出结果一样
指针实例
package main
import (
"fmt"
)
func main() {
v:="5"
str:=&v //对普通变量使用&取得指针
fmt.Printf("str的数据类型: %T",str)
fmt.Println()
val:=*str //使用*取指针的值
fmt.Printf("val的数据类型: %T",val)
fmt.Println()
fmt.Printf("val的值: %s",val)
}
输出为:
str的数据类型: *string
val的数据类型: string
val的值: 5
指针的其他几种创建方式:
//用new创建
①str:=new(string)
//*加变量名
②*str1="fff"
//正统命名方式
③var a *string ="ffff"
二.栈与堆
栈适合分配大小确定的内存对象, 对象们被放在一串连续的内存地址上, 内存分配和回收非常快
堆适合分配大小不定的内存对象, 对象们不连续地被放在一块内存空间内, 内存的分配回收较慢