golang第二卷---变量

变量

  • 变量的声明
  • 匿名变量
  • 作用域

参考网站:go变量

变量的声明

Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。

关于静态类型语言与动态类型语言的区别

  • 静态类型语言在编译时进行类型检查,即在代码编译的过程中就会检查变量的类型是否符合规定,如果不符合就会报错。因此,静态类型语言的代码在运行之前就已经确定了所有变量的类型,这样可以避免一些类型错误在运行时才被发现

  • 动态类型语言在运行时进行类型检查,即在代码执行的过程中才会检查变量的类型是否符合规定,如果不符合就会报错。因此,动态类型语言的代码在运行时才会确定变量的类型,这样可以使程序更加灵活,但也会增加一些类型错误的风险

变量就是一段或者多段内存,用于存储数据

1、变量声明以关键字var开头,变量类型后置,行尾无须分号

var 变量名 变量类型

变量的命名规则遵循驼峰命名法,即首个单词小写,每个新单词的首字母大写

2、基本类型

  • bool
  • string
  • int(随系统,一般是占用4个字节)、int8(占一个字节)、int16(占两个字节)、int32(占4个字节)、int64(占8个字节)
  • uint(无符号整数)、uint8、uint16、uint32、uint64、uintptr
  • byte // uint8 的别名(代表ASCII码的一个字符)
  • rune // int32 的别名(代表一个UTF-8字符)
  • float32、float64
  • complex64(复数类型,由两个 float32 类型的实部和虚部组成)、complex128(复数类型,由两个 float64 类型的实部和虚部组成)
var z1 complex64 = complex(3.0, 4.0)  // 创建一个 complex64 类型的复数
var z2 complex128 = complex(3.0, 4.0)  // 创建一个 complex128 类型的复数

所有的内存在 Go 中都是经过初始化的。

3、不指明变量类型

var age = 1

像上面这种声明变量的方式,并没有指明类型,Go语言中,在编译时会自动推导类型

4、批量格式

var (
    a int
    b string
    c []float32
)

5、 简短格式(最常用)

//i是变量名 1 是值(或者表达式)
i := 1

使用简短格式的限制:

  • 定义变量,同时显式初始化
  • 不能提供数据类型
  • 只能用在函数内部

简短变量声明被广泛用于大部分的局部变量的声明和初始化,var 形式的声明语句往往用于需要显式指定变量类型的地方

匿名变量

使用多重赋值时,如果不需要在左值中接受变量,可以使用匿名变量

匿名变量以“_”下划线表示
匿名变量不占用命名空间,也不会分配内存。匿名变量可以重复声明使用

package main

import (
	"fmt"
	"net"
)

func main() {

	conn, _ := net.Dial("tcp", "127.0.0.1:8080")
	//匿名变量可以重复声明
	conn1, _ := net.Dial("tcp", "127.0.0.1:8080")
	// 匿名变量不可以直接开头
	// _ :=1
	fmt.Println(conn)
	fmt.Println(conn1)
}

“_”本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。

作用域

go语言中根据变量定义位置的不同,可以分为以下三个类型:

  • 函数内定义的变量称为局部变量

局部变量不是一直存在的,它只在定义它的函数被调用后存在,函数调用结束后这个局部变量就会被销毁

  • 函数外定义的变量称为全局变量

全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

  • 函数定义中的变量称为形式参数

在定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值
形式参数会作为函数的局部变量来使用

你可能感兴趣的:(golang,golang,后端)