zoukankan      html  css  js  c++  java
  • 3.7 Go指针

    1. Go指针

    每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。

    Go 语言中使用&作符放在变量前面对变量进行“取地址”操作。

    1.指针默认值nil
    2.通过&(取地值符)取变量地址
    3.通过*(取值符)透过指针访问目标值
    

    格式:

    age := 18
    ptr:=&age  //age是变量名,&age是取age的内存地址,地址交给ptr变量接收,ptr类型是*int
    

    首先基本数据类型中,如name="yugo" ,变量name存的值是yugo

    1)基本数据类型,变量存的是,称为类型

    2)通过&符号获取变量地址,例如&name

    3)指针类型的变量,存的是另一个变量的内存地址,这个地址指向的空间存的是

    4)获取指针类型指向的,使用*,例如*ptr,使用*ptr获取ptr指向的值

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        var name string = "yugo"
        //查看name变量的内存地址,通过&name取地址
        fmt.Printf("name的内存地址:%v
    ", &name)
    
        //指针变量,存的是内存地址
        //ptr指针变量指向变量name的内存地址
        var ptr *string = &name
        fmt.Printf("指针变量ptr的内存地址:%v
    ", ptr)
    
        //获取指针变量的值,用*ptr
        //*ptr表示读取指针指向变量的值
        fmt.Printf("指针变量ptr指向的值是:%v
    ", *ptr)
    }
    

    5)值类型(int、float、bool、string、array、struct)都有对应指针类型

    比如*int*string等等

    6)使用指针类型交换变量的值

    //想要交换ab的值
    func exchange(a, b *int) {
        *a, *b = *b, *a
    }
    
    func main() {
        a, b := 3, 4
        exchange(&a, &b)
        fmt.Println(a, b)
    }
    

    7)使用new()函数创建指针

    func main() {
        s1 := new(string)                                  //new函数返回指针类型*string,用s1指针变量存储
        fmt.Printf("s1类型:%T  s1指针变量存储的内存地址是:%v
    ", s1, s1) //s1类型*string,值是空字符串的内存地址
        //s1="哈哈" 错误写法,s1存储的内存地址
        *s1 = "马云说我不爱钱" //*s1取内存地址指向的值
        fmt.Println(*s1)
    }
  • 相关阅读:
    iptables一个包过滤防火墙实例
    www的iptables实例
    iptables单个规则实例
    iptables [-j target/jump] 常用的处理动作
    iptables [match] 常用封包匹配参数
    iptables command 常用命令列表
    iptables [-t table] 指定规则表
    iptablesIP规则的保存与恢复
    iptables在我们的网络机房实现NAT共享上网
    iptables典型NAT上网
  • 原文地址:https://www.cnblogs.com/open-yang/p/11256771.html
Copyright © 2011-2022 走看看