Go学习day1 | 青训营

82 阅读4分钟

GoLand学习day1

基本语法

基本组成

  • 包声明:编写源文件时,必须在非注释的第一行指明这个文件属于哪个包,如package main
  • 引入包:即告诉Go 编译器这个程序需要使用的包
  • 函数:和c语言相同,即是一个可以实现某一个功能的函数体,每一个可执行程序中必须拥有一个main函数
  • 变量:Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
  • 语句/表达式:在 Go 程序中,一行代表一个语句结束。每个语句不需要以分号 ; 结尾,这些工作都将由 Go 编译器自动完成。
  • 注释,以 // 开头进行单行注释。以 /* 开头,并以 */ 结尾来进行多行注释,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

数据类型

类型详解
布尔型只可以是常量 true 或者 false
数字类型整型 int 和浮点型 float。Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
字符串类型字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
派生类型(a) 指针类型(Pointer)(b) 数组类型 ([]) (c) 结构化类型 (struct) (d) Channel 类型 (e) 函数类型 (f) 切片类型(g) 接口类型(interface)(h) Map 类型

定义变量

  • var 变量名 变量类型

    • 在go语言中定义了一个变量,指定变量类型,如果没有初始化,则变量初始化为默认值。

      类型默认值
      数值类型0
      布尔类型false
      字符串""(空字符串)
    • 在go语言中如果没有指定变量类型,可以通过变量的初始值来判断变量类型

  • 变量名 := 初始值

val := 1
//等价于
var val int
val = 1
  • 多变量声明:可以同时声明多个类型相同的变量(非全局变量
var x, y int
var c, d int = 1, 2
//采用第二种方法可以同时初始化多个变量
g, h = 123, "hello"
  • 全局变量声明:var ( vname1 type1 vname2 type2 ...)
var (
    a int
    b bool
)
  • 匿名变量:匿名变量的特点是一个下画线_,这本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算

    • 使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用
    func GetData() (int, int) {
        return 10, 20
    }
    func main(){
        a, _ := GetData()
        _, b := GetData()
        fmt.Println(a, b)
    }
    
  • 变量作用域:

    • 函数内定义的变量为局部变量,这种局部变量的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。这种变量存在于函数被调用时,销毁于函数调用结束后。
    • 函数外定义的变量为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,甚至可以使用import引入外部包来使用。全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写
    • 函数定义中的变量成为形式参数,定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。形式参数会作为函数的局部变量来使用