采用 * 符号来区分正常类型变量和指针变量
package main
import "fmt"
func main() {
str := "Hello world"
var strP *string
strP = &str
*strP = "How are you"
fmt.Println("指针strP的地址为", strP)
fmt.Println("指针strP指向的值为", *strP)
fmt.Println("变量str的地址为", &str)
fmt.Println("变量str的值为", str)
}
指针strP的地址为 0xc000118220
指针strP指向的值为 How are you
变量str的地址为 0xc000118220
变量str的值为 How are you
Go 语言中只有值传递,没有引用传递,想要指针作为参数传入函数中,只能传递地址进入函数进行修改
package main
import "fmt"
func swap(a, b *int) {
*a, *b = *b, *a
}
func main() {
a := 10
b := 20
fmt.Println("交换前的a=", a, "b=", b)
swap(&a, &b)
fmt.Println("交换后的a=", a, "b=", b)
}
交换前的a= 10 b= 20
交换后的a= 20 b= 10
package main
import "fmt"
func main() {
var a [2]int //声明一个长度为2的一维数组。自动初始化为零值
var b [2][2]int //声明一个2行2列的二维数组。自动初始化为零值
var c = [2]int{1, 2} //声明并定义一个长度为2,值为[1,2]的数组
var d = [...]int{3, 4} //使用 ... 表示根据数组后值的长度自动初始化长度。因为后面的值是 [3,4] 数组自动初始化长度为 2
fmt.Println("a的值", a)
fmt.Println("b的值", b)
fmt.Println("c的值", c)
fmt.Println("d的值", d)
}
a的值 [0 0]
b的值 [[0 0] [0 0]]
c的值 [1 2]
d的值 [3 4]
数组的长度是否相等,数组中存放的值是否顺序和大小完全相同。只要这两个部分相等,则 Go 语言中的两个数组就是相等的
package main
import "fmt"
func main() {
var a [2]int
var c = [2]int{1, 2}
var d = [...]int{1, 2}
fmt.Println("a == c ? ", a == c)
fmt.Println("c == d ?", c == d)
}
a == c ? false
c == d ? true
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。