golang学习入坑go语言变量及常量(代码片段)

aoxueshou aoxueshou     2022-12-06     131

关键词:

(一)GO语言变量

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字

声明变量的一般形式是使用 var 关键字:

//var identifier type
//其中 identifier  是变量,type是类型
例如:
var tongtong string = "zhang"
fmt.Println(tongtong)

//可以一起声明多个变量
var b, c int = 1, 2
fmt.Println(b,c)
(1、)数值类型变量声明如果无初始化,默认是0数值类型
(complex64/128)为 0

布尔类型为 false

字符串为 ""(空字符串)

以下几种类型为 nil

var a *

int
var a []int

var a map[string] int

var a chan int

var a func(string) int

var a error // error 是接口

(2、)根据值自行判定变量类型。

   var d = true
      fmt.Println(d)

   未声明类型,根据值判断输出true

(3、)第三种,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误,格式:

  

var intVal int 

intVal :=1 // 这时候会产生编译错误   因为intVal已经存在,不是新的变量

intVal,intVal1 := 1,2 // 此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句

  我们常用的是:

     haha :=  ‘我在笑‘

  fmt.PrintLn(haha)

(4、)多变量声明:

 //类型相同多个变量, 非全局变量

var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

(5、)
值类型和引用类型 (重要)
所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:
当使用等号 = 将一个变量的值赋值给另一个变量时,如:j = i,实际上是在内存中将 i 的值进行了拷贝:
你可以通过 &i 来获取变量 i 的内存地址
f := true
fmt.PrintLn(&f)
内存地址会根据机器的不同而有所不同,甚至相同的程序在不同的机器上执行后也会有不同的内存地址。因为每台机器可能有不同的存储器布局,并且位置分配也可能不同.

 一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。

 这个内存地址为称之为指针,这个指针实际上也被存在另外的某一个字中。

 

  同一个引用类型的指针指向的多个字可以是在连续的内存地址中(内存布局是连续的),这也是计算效率最高的一种存储形式;也可以将这些字分散存放在内存中,每个字都指示了下一个字所在的内存地址。

 

  当使用赋值语句 r2 = r1 时,只有引用(地址)被复制。

 

  如果 r1 的值被改变了,那么这个值的所有引用都会指向被修改后的内容,在这个例子中,r2 也会受到影响。

 

技术图片

 (6、)简短形式,使用 := 赋值操作符    这个就不解释了

  不过要注意一点的是:如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误 a declared and not used

 

(二)GO语言常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

常量的定义格式:

const identifier [type] = value


不过也可以省略类型

const b = "abc"          

常量还可以用作枚举:

const (
    Unknown = 0
    Female = 1
    Male = 2
)
package main

import "unsafe"
const (
    a = "abc"
    b = len(a)                              //计算长度
    c = unsafe.Sizeof(a)             //这个函数返回的是数据类型的大小
  //这里查了一下解释下:string类型不是直接存的数据,而是一个结构体,用指针指向实际数据地址。为Golang中的sring内部实现由两部分组成,一部分是指向字符串起始地址的指针,另一部分是字符串的长度,两部分各是8字节,所以一共16字节
  
), func main() println(a, b, c) 常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过: abc 3 16

这个是字符串的结构
type StringHeader struct 
        Data uintptr
        Len  int

  

 

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

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

 

 



golang学习入坑go语言结构及基本语法及基本类型

(一)GO的语言结构:Go语言的基础组成有以下几个部分:包声明引入包函数变量语句&表达式注释//所有的新语言都是以helloword开始packagemain//这个是包的声明你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:pac... 查看详情

golang学习笔记---go语言变量常量的定义及赋值

单个变量的赋值与声明变量的声明格式:var <变量名称> <变量类型>变量的赋值格式:<变量名称>=<表达式>声明的同时赋值:var<变量名称>[变量类型]=<表达式><变量名>:=<变量值> --->... 查看详情

golang✔️走进go语言✔️第三课常量(代码片段)

【Golang】✔️走进Go语言✔️第三课常量概述常量常量计算iota概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世界.(第3课)常量常量(Constant)是指程序在执行过程中不会改变的固定值.常量可以是任何... 查看详情

golang核心编程(代码片段)

文章目录一、基础知识:1.语言简介:1.2语言特性:1.3Go语言特性:2.初识Go程序:3.Go词法单元:3.1token:3.2标识符:3.3操作符和分隔符:3.4字面常量3.5总结:4.变量与常量:4.1变量:4.1.1声明方式:4.1.2变量属性:4.2常量:5.基本数据类型:5.1布尔类型:5.2... 查看详情

golang初识和变量,常量,iota(代码片段)

目录一、go语言与python1.go语言2.python二、变量相关1.go语言的基本语法2.标识符和关键字3.变量声明(1)声明变量时未指定初始值(2)声明变量时指定初始值(3)声明变量时不指定类型(4)短变量声明(5)匿名变量(6)注意小... 查看详情

e01golang语言之变量和常量(代码片段)

标识符与关键字Ⅰ、标识符在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。举几个例子:abc, _, _123,&n... 查看详情

golang✔️走进go语言✔️第二课语法基础(代码片段)

【Golang】✔️走进Go语言✔️第二课语法基础概述Go语法基础关键字标识符数据类型变量声明多变量声明值类型和引用类型概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世界.(第2课)Go语法基础Go程... 查看详情

go语言学习之旅--初识golang(代码片段)

Go语言简介特点编码风格Go安装测试Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态强类型、编译型语言。Go语言语法与C相近,但功能上有:内存安全,GC(垃圾回收),结... 查看详情

go语言自学系列|golang函数类型与函数变量(代码片段)

视频来源:B站《golang入门到项目实战[2021最新Go语言教程,没有废话,纯干货!持续更新中...]》一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!附上汇总贴ÿ... 查看详情

golang✔️走进go语言✔️第九课局部变量vs全局变量(代码片段)

【Golang】✔️走进Go语言✔️第九课局部变量vs全局变量概述变量作用域全局变量vs局部变量形式参数vs实际参数概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世界.(第9课)变量作用域作用域(Scope)为... 查看详情

golang✔️走进go语言✔️第九课局部变量vs全局变量(代码片段)

【Golang】✔️走进Go语言✔️第九课局部变量vs全局变量概述变量作用域全局变量vs局部变量形式参数vs实际参数概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世界.(第9课)变量作用域作用域(Scope)为... 查看详情

go学习golang底层学习笔记(代码片段)

1.1.1.Go编译词法与语法分析意义:解析源代码文件,将文件中字符串序列转换成Token序列把执行词法分析的程序称为词法解析器(lexer)语法解析的结果就是抽象语法树(AST)每个AST都对应一个单独的Go语言文件,这个抽象语法树中包括当前... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—常量变量的声明:单个变量的声明与赋值(代码片段)

变量来源于数学,是计算机语言中储存计算结果或表示值的抽象概念,变量可以通过变量名访问。变量的功能是存储用户的数据。不同的逻辑有不同的对象类型,也就有不同的变量类型。经过半个多世纪的发展,... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—常量变量的声明:常量的初始化定义(代码片段)

常量是一个简单值的标识符,在程序运行时,不会被修改。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。常量的初始化定义特点常量的值在编译时就已确定,可以用于数... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—变量作用域:能够使用变量的代码范围(代码片段)

作用域是已声明标识符所表示的常量、变量、类型、函数或包在源代码中的作用范围。Go语言可以在三个地方声明变量:函数体内定义的变量,称为局部变量函数体外定义的变量,称为全局变量函数定义中的变量,... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—常量变量的声明:变量初始化声明和变量赋值(代码片段)

变量声明出现了:expecteddeclaration,found‘IDENT’。变量声明的要点:=只能在函数体内部使用,只用来声明临时(局部)变量。不能用于声明函数体外的全局变量使用var关键字在函数体外部初始化全局变量,正... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—变量的数值类型转换(代码片段)

go语言使用类型前置加括号的方式进行类型转换。格式若A是一个全新的类型,需要加:;若之前已经声明过A,则不需要加:。其中,TypeOfA代表要转换的类型,B包括变量、复杂算子和函数返回值等表达式。A[:]=... 查看详情

go语言学习笔记—基础—基本语法—常量与变量—常量变量的声明:常量的初始化规则与枚举(代码片段)

packagemainimport("fmt")//常量初始化const( a="A"//第一个常量必须显式指定表达式,a与b都为"A" b c,d=iota,iota//itoa从0计数,前面已有两个常量,其值为2 e,f//e、f的常量表达式为iota,其值为3 g= 查看详情