Go语言指针
2019-12-23 本文已影响0人
沫明
1.取地址操作符&和取值操作符是一对互补操作符,&取出地址,根据地址取出地址指向的值。
2.创建指针的另一种方法——new() 函数
new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值。
3.%传参
%T 打印的类型
%p 打印的指针地址
%s 打印值
4.使用指针变量可以获取命令行的输入信息【参考于:http://c.biancheng.net/view/21.html】
Go语言内置的 flag 包实现了对命令行参数的解析,flag 包使得开发命令行工具更为简单。
5.参考代码:
package main
import (
"fmt"
)
// &取出地址,*根据地址取出地址指向的值
func main() {
test5()
}
func test1() {
var cat int=1
var str string="banana"
fmt.Println(&cat,*&str) //0xc0000200f8 banana
fmt.Printf("%p %p",&cat,&str) //0xc0000200f8 0xc000010200
}
//0xc00009a010 banana
//0xc00009a010 0xc0000781e0
func test2() {
var house = "Malibu Point 10880, 90265"
ptr :=&house
// %T 打印ptr的类型
fmt.Printf("ptr typr:%T \n",ptr) //ptr typr:*string
// %p 打印ptr的指针地址
fmt.Printf("address:%p\n",ptr) //address:0xc0000781e0
// 对指针进行取值操作
value := *ptr
fmt.Printf("value type: %T\n", value)
// %s 指针取值后就是指向变量的值
fmt.Printf("value: %s\n", value)
}
// 交换函数
func swap(a, b *int) {
// 取a指针的值, 赋给临时变量t
t := *a
// 取b指针的值, 赋给a指针指向的变量
*a = *b
// 将a指针的值赋给b指针指向的变量
*b = t
}
func test4() {
a,b:=1,2
b,a=a,b
fmt.Println(a,b)
}
//创建指针的另一种方法——new() 函数
func test5(){
str := new(string) //new() 函数可以创建一个对应类型的指针,创建过程会分配内存,被创建的指针指向默认值
*str = "Go语言教程"
fmt.Println(str)
fmt.Println(*str)
}