zoukankan      html  css  js  c++  java
  • go语言基础之复合类型

    1、分类

    类型

    名称

    长度

    默认值

    说明

    pointer

    指针

     

    nil

     

    array

    数组

     

    0

     

    slice

    切片

     

    nil

    引⽤类型

    map

    字典

     

    nil

    引⽤类型

    struct

    结构体

     

     

     

    2、指针

             指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。Go语言对指针的支持介于Java语言和C/C++语言之间,它既没有想Java语言那样取消了代码对指针的直接操作的能力,也避免了C/C++语言中由于对指针的滥用而造成的安全和可靠性问题。

     

    Go语言虽然保留了指针,但与其它编程语言不同的是:

    1. 默认值 nil,没有 NULL 常量
    2. 操作符 "&" 取变量地址, "*" 通过指针访问目标对象
    3. 不支持指针运算,不支持 "->" 运算符,直接⽤ "." 访问目标成员

    示例:

    package main //必须有个main包
    
    import "fmt"
    
    func main() {
    	var a int = 10
    	//每个变量有2层含义:变量的内存,变量的地址
    	fmt.Printf("a = %d
    ", a) //变量的内存
    	fmt.Printf("&a = %v
    ", &a)
    
    	//保存某个变量的地址,需要指针类型   *int 保存int的地址, **int 保存 *int 地址
    	//声明(定义), 定义只是特殊的声明
    	//定义一个变量p, 类型为*int
    	var p *int
    	p = &a //指针变量指向谁,就把谁的地址赋值给指针变量 
    	fmt.Printf("p = %v, &a = %v
    ", p, &a)  //%v 自动配置类型
    
    	*p = 666 //*p操作的不是p的内存,是p所指向的内存(就是a)
    	fmt.Printf("*p = %v, a = %v
    ", *p, a)
    
    }

    #执行结果:

    a = 10
    &a = 0xc00000c198
    p = 0xc00000c198, &a = 0xc00000c198
    *p = 666, a = 666
    

      

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    使用PowerDesigner创建表并导入到数据库
    第二次作业——结对项目之需求分析与原型模型设计
    使用Git进行代码管理
    常用
    头文件
    只出现一次的数
    链表实现基础排序算法
    判断链表有公共点
    单链表判环
    二叉树非递归遍历
  • 原文地址:https://www.cnblogs.com/nulige/p/10237345.html
Copyright © 2011-2022 走看看