美文网首页Golang
Golang笔记之值类型和引用类型

Golang笔记之值类型和引用类型

作者: 2f1b6dfcc208 | 来源:发表于2017-05-16 19:00 被阅读430次
  • 值类型:所有像int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。可以通过 &i 获取变量 i 的内存地址
  • 引用类型:复杂的数据通常会需要使用多个字,这些数据一般使用引用类型保存。一个引用类型的变量r1存储的是r1的值所在的内存地址(数字),或内存地址中第一个字所在的位置,这个内存地址被称之为指针,这个指针实际上也被存在另外的某一个字中。
  • 局部变量被声明后必须在相同的代码块中使用它,否则会得到编译错误,全局变量允许声明但不使用
  • 如果要交换两个变量(已声明且赋值)的值,可以简单地使用a,b = b,a,这被称为并行或同时赋值; _实际上是一个只写变量,我们无法得到它的值,这样做是因为Go语言中必须使用所有被声明的局部变量,但有时我们并不需要使用从一个函数中得到的所有返回值;并行赋值也被用于当一个函数返回多个返回值时,比如这里的val和错误err是通过调用func1函数同时得到:val,err = func1()
  • iota:特殊常量,可以认为是一个可以被编译器修改的常量。在每一个const关键字出现时,被重置为0,然后在下一个const出现之前,每出现一次iota,值自动加1.
    iota可以被用作枚举值
package main
const (
    a = iota
    b = iota
    c = iota
)
func main() {
    println(a, b, c)//0 1 2
}

第一个iota等于0,每当iota在新的一行被使用时,它的值都会自动加1;所以a=0,b=1,c=2可以简写为下列形式(?不太懂):

const (
    a = iota
    b
    c
)

结果与之前一样。
iota用法:

package main
import "fmt"
func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i) // 0 1 2 ha ha 100 100 7 8
}

<<:左移运算符,用来将一个数的各二进制位全部左移若干位
iota实例:

package main
import "fmt"
const (
    i=1<<iota
    j=3<<iota
    k
    l
)
func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}

以上实例运行结果为:

i= 1
j= 6
k= 12
l= 24

iota表示从0开始自动加1,所以i=1<<0,j=3<<1(<<表示左移的意思),即:i=1,j=6,这没问题,关键在k和l,从输出结果看,k=3<<2,l=3<<3。

记得很乱,自己看看就行

相关文章

  • Golang笔记之值类型和引用类型

    值类型:所有像int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中...

  • golang实战笔记

    golang实战笔记 一、集合类型 1.值指针和引用类型a、go语言变量持有相应的值,列外:通道、函数、方法、映射...

  • 【golang】值类型与引用类型

    golang中分为值类型和引用类型 值类型分别有:int系列、float系列、bool、string、数组和结构体...

  • Golang内置函数

    Golang内置类型和函数 内置类型值类型和引用类型的区别如下:值类型:内存中变量存储的是具体的值 比如: var...

  • golang的值类型和引用类型

    队列:先进先出栈:先进后出,在程序调用的时候从栈空间去分配堆:在程序调用的时候从系统的内存区分配 1)值类型:基本...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • 面试

    值类型和引用类型 值类型和引用类型的区别是值类型直接存储其值,而引用类型存储对值的引用。这两种类型存储在内存的不同...

  • Java之值类型和引用类型的扩展分析

    大纲: 1.什么是值类型,什么是引用类型? 2.值类型int和引用类型Integer的区别和转换 3.Java之按...

  • Golang:值类型与引用类型

    Golang is a pass by value language, so any time we pass a...

  • 慕课网《前端JavaScript基础面试技巧》学习笔记

    变量类型 值类型和引用类型 值类型只能存储一个值 值类型复制就是值类型本身 引用类型复制只是复制引用类型的指针 引...

网友评论

    本文标题:Golang笔记之值类型和引用类型

    本文链接:https://www.haomeiwen.com/subject/pqulxxtx.html