标签:swap slice 结构 array 交换 必须 返回 channel new
类型 | 名称 | 长度 | 默认值 |
---|---|---|---|
pointer | 指针 | nil | |
array | 数组 | 0 | |
slice | 切片 | nil | |
map | 字典 | nil | |
struct | 结构体 |
取地址符是&
,放到一个变量前使用就会返回相应变量的内存地址package main
import "fmt"
func main() {
var a int
a = 0
// 使用 & 符号获取变量地址
fmt.Println(&a)
fmt.Printf("变量a的地址是: %x\n", &a)
}
(var a int = 10)
var 指针变量名 *指针类型
package main
import "fmt"
func main() {
var a int
a = 10
var p *int
// 指针类型存变量地址
p = &a
fmt.Printf("变量a的地址: %x\n", &a)
fmt.Printf("指针类型p指向a地址的值: %x\n", p)
fmt.Printf("指针类型p获取指针变量的值: %d\n", *p)
}
nil
package main
import "fmt"
func main() {
var p *int
fmt.Println(p)
fmt.Printf("p的值%x\n", p)
// 判断类型是否为空
if p != nil {
fmt.Println("非空")
} else {
fmt.Println("空")
}
}
package main
import "fmt"
func swap(a, b *int) {
// 交换语法,必须交换值
//a, b = b, a
*a, *b = *b, *a
}
func main() {
a, b := 10, 20
fmt.Println(a, b)
swap(&a, &b)
fmt.Println(a, b)
}
package main
import "fmt"
func swap(a, b *int) (*int, *int) {
a, b = b, a
return a, b
}
func main() {
a, b := 10, 20
fmt.Println(a, b)
c, d := swap(&a, &b)
fmt.Println(*c, *d)
fmt.Println(&a, &b)
// 这里可以打断点,导致连锁反应
a = *c
b = *d
fmt.Println(a, b)
}
package main
import "fmt"
func main() {
a := new([]int)
fmt.Println(a)
b := make([]int, 10, 20)
fmt.Println(b)
}
// 输出结果
// &[]
// [0 0 0 0 0 0 0 0 0 0]
标签:swap slice 结构 array 交换 必须 返回 channel new
原文地址:https://www.cnblogs.com/zhichaoma/p/12510011.html