Golang学习+深入(三)-变量

目录

一、概述

1、指针

2、值类型和引用类型

3、变量作用域


一、概述

1、指针

  1. 基本数据类型,变量存的就是值,也叫值类型。
  2. 获取变量的地址,用&,比如:var n1 int 获取n1的地址:&n1
  3. 指针类型,变量存的是一个地址,这个地址指向的空间存的才是值,比如:var ptr *int =&n1
  4. 获取指针类型所指向的值,使用: *,比如: var ptr int,使用ptr获取指针指向的值
package main
import (
	"fmt"
)
func main() {
	var i int =10
	fmt.Println("i的地址=",&i)

	//var ptr *int = &i 的意思
	//1.ptr 是一个指针变量
	//2.ptr 的类型 *int
	//3.ptr 本身的值&i
	var ptr *int = &i
	fmt.Printf("ptr=%v\n",ptr)
	fmt.Printf("ptr的地址=%v\n",&ptr)
	fmt.Printf("ptr指向的值=%v\n",*ptr)
}
//结果
i的地址= 0xc00000e0a8
ptr=0xc00000e0a8
ptr的地址=0xc00000a030
ptr指向的值=10

Golang学习+深入(三)-变量_第1张图片

  1. 值类型,都有对应的指针类型,形式为 数据类型,比如:int对应的指针就是int,float32对应的指针类型就是*float32,依次类推
  2. 值类型包括:基本数据类型int系列,float系列,bool,string,数组和结构体struct

2、值类型和引用类型

  1. 值类型:基本数据类型int系列,float系列,bool,string,数组和结构体struct
  2. 引用类型:指针、slice切片、map,管道chan、interface等都是引用类型
  3. 值类型和引用类型的使用特点
    1. 值类型:变量直接存储值,内存通常在栈中分配
    2. 引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。

3、变量作用域

  1. 函数内部声明/定义的变量叫做局部变量,作用域仅限于函数内部。
  2. 函数外部声明/定义的变量叫做全局变量,作用域在整个包都有效,如果其首字母为大写,则作用域在整个程序有效。
  3. 如果变量是在一个代码块,比如:for/if中,那么这个变量的作用域就在该代码块
  4. 赋值语句不能在函数体外执行,全局变量 不能使用 这种方式定义 name :="tom",会报syntax error: non-declaration statement outside function body错误。错误原因:等价 1.var name string 2.name = "tom",赋值语句不能在函数体外执行,报错。

干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!

你可能感兴趣的:(golang,学习,c++)