go语言入门四(复合类型 数组切片 指针)
2021-01-26 16:15
标签:Go语言 函数指针 指针函数 如何 string 相对 c语言 地址 应该 main 我们学过了基础数据类型 现在学习下复合类型 复合类型:把基础类型封装起来了 。 指针可是c语言中的重头戏,指针数组 数组指针 函数指针 指针函数 回调函数 回调函数的数组 一级指针二级指针三四五 。。。。c语言指针有可以进行判断 进行+-等操作 go语言是不行的 go语言弱化了指针,最多只有二级指针 基础数据类型存放的是值 数 指针存放的是地址,切记是地址 &就是取地址的意思 &a吧a的地址取出来给了p 指针定义了最好要初始化,要不然后期用了 忘记赋值可就成了野指针 结果 因为p存放的是a的地址 所以地址是一样的 我们如何取出p地址的值那 我们可以用*的方法吧p存的地址值取出来。 结果就是10 10了 我们再来看看二级指针 我们来分析下这段代码,前三个都是打印的a的地址 &a是a的地址毋庸置疑 p存的也是a的地址 pp存放的是p的地址 *pp就是取出p的值也就是a的地址 最后两行 打印的都是p的地址,&p就是p的地址 pp 也是p的值 函数本身也是一种类型,学完了函数来学习闭包函数吧 闭包函数 函数里面包含一个匿名函数 函数里面的局部变量相对于匿名函数来说 也是全局变量,它会把这个值保存起来,应该是根据执行函数的地址 来存放起来。 具体的我不是很懂,后期需要继续查资料 数组 数组是一片连续的内存存放同种数据类型的一种容器 如下就是开辟可以放五个整型的数组 打印的结果为 1 2 3 4 5 数组可以放任何类型 包含复合后面 指针都可以 打印a b c d e 的地址 go语言入门四(复合类型 数组切片 指针) 标签:Go语言 函数指针 指针函数 如何 string 相对 c语言 地址 应该 main 原文地址:https://www.cnblogs.com/itxiaoye/p/12762727.html指针
package main
import "fmt"
func main() {
var a int = 10
var p *int = &a
fmt.Println(p)
fmt.Println(&a)
}
package main
import "fmt"
func main() {
var a int = 10
var p *int = &a
fmt.Println(p)
fmt.Println(&a)
fmt.Println(*p)
fmt.Println(a)
}
package main
import "fmt"
func main() {
var a int = 10
var p *int = &a
var pp ** int = &p
fmt.Println(&a)
fmt.Println(p)
fmt.Println(*pp)
fmt.Println(&p)
fmt.Println(pp)
}
package main
import "fmt"
func main() {
a := getStack("龙玉1")
b := getStack("龙玉2")
c := a(10)
d := b(20)
c = a(10)
d = b(20)
fmt.Println(&a, c)
fmt.Println(&b, d)
// a 存放的是局部函数的地址
// b也是存放的匿名函数的地址
//a() b()也就是执行匿名函数
// sum相对于匿名函数来说 则是全局变量,所以sum的被保留了
}
func getStack(name string, ) func(min int) int {
var sum int = 0
a := func(min int) int {
sum += min
return sum
}
return a
}
package main
import "fmt"
func main() {
var array [5]int = [5]int {1,2,3,4,5}
fmt.Println(array)
}
package main
import "fmt"
func main() {
a := 1
b := 2
c := 3
d := 4
e := 5
var parray [5]* int = [5]*int{&a,&b,&c,&d,&e}
fmt.Println(parray)
}
文章标题:go语言入门四(复合类型 数组切片 指针)
文章链接:http://soscw.com/index.php/essay/47352.html