zoukankan      html  css  js  c++  java
  • Go:值类型、引用类型

    值类型,变量存的就是值本身:

      in系列t、float系列、bool、string、数组和struct

    引用类型,变量存的是一个地址,这是地址存的才是值本身:

      指针、slice、map、chan、interface

    获取变量的地址,使用 &,比如: var a int,使用 &a 获取变量a的地址。

    获取指针所指向的值,使用 *,比如:var *p int,使用 *p 获取p指向的值,使用 &p 获取指针p的地址。

    package main
    
    import "fmt"
    
    // 方式1:交换两个变量的值
    func swap1(a, b *int) {
    	*a, *b = *b, *a
    }
    
    // 方式2:交换两个变量的值
    func swap2(a, b int) (int, int) {
    	return b, a
    }
    
    func main() {
    	var i int = 10
    	var p *int = &i // *int代表指针,&a代表获取a的地址
    	*p = 20			// 给指针所指向的值赋值
    	fmt.Println(i)  // 20
    
    	a, b := 11, 22
    	swap1(&a, &b)
    	fmt.Println(a, b) // 22 11
    
    	c, d := 33, 44
    	c, d = swap2(c, d)
    	fmt.Println(c, d) // 44 33
    }
    

    更多演示:

    package main
    
    import "fmt"
    
    func main() {
    	var i int
    	i = 10
    	fmt.Printf("i的地址:%p
    ", &i)
    
    	var pointer *int
    	pointer = &i
    	fmt.Printf("pointer是一个指针变量:%v
    ", pointer)
    	fmt.Printf("pointer的地址:%p
    ", &pointer)
    	fmt.Printf("pointer指向的值:%v
    ", *pointer)
    }
    // 输出结果:
    // i的地址:0xc00000a0c8
    // pointer是一个指针变量:0xc00000a0c8
    // pointer的地址:0xc000006030
    // pointer指向的值:10
    
  • 相关阅读:
    Python: 编程遇到的一些问题以及网上解决办法?
    Python: Win7下使用 pip install lxml 无法安装lxml?
    Python:Pycharm下无法导入安装好的第三方模块?
    Python:如何删除文件中的空白行?
    Pycharm 快捷键
    Python读取二进制文件
    python实现grep
    Python学习笔记
    VBA批量查找和复制文件
    %~dp0是什么意思
  • 原文地址:https://www.cnblogs.com/believepd/p/10850795.html
Copyright © 2011-2022 走看看