GO语言基础 | 青训营笔记

180 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

一:变量

变量的三种使用方式

(1)指定变量类型,声明后不复制,用默认值

package main
import (
   "fmt"
  )
func main(){
     var i int
     fmt.println("i="+i)

(2)根据值自行推导变量类型;

var i=10.11 
fmt.println("i="+i)

(3)省略var,注意:等号左侧的变量不应该是已经声明果的,否则会导致编译报错

i:="tom"
fmt.println("i="+i)

多变量声明

一次声明多个变量:

(1)第一种方式

var n1,n2,n3 int 
  fmt.println("n1=",n1,"n2=",n2,"n3=",n3)

(2)第二种方式

 var n1,n2,n3=100,"tom",888
  fmt.println("n1=",n1,"n2=",n2,"n3=",n3)

一次声明多个全局变量(再函数外部定义的变量就是全局变量):

  //定义全局变量
  var n1=100
  var n2=200
  n3="tom"
  //上面的声明方式,也可以改成一次性声明
  var (
	  n3=300
	  n4=900
	  n5="mary"
  )

该区域的数据值可以在同一类型范围内不断变化

 //该区域的数据值可以在同一类型范围内不断变化
  var i int=10
  i=30
  i=50
  fmt.Println("i=",i)
  i=1.2//错误,原因是不能改变数据类型

变量在统一作用域(在同一函数或者在代码块)内不能重名

  var i int=59
  i:=99
  //错误

Golang变量如果没有赋初值,编译器会使用默认值,比如int默认值为0,string默认值为空串

二:数据类型

image.png

整数类型

image.png

整型的使用细节

  1. Golang 各整数类型分:有符号和无符号,int uint 的大小和系统有关。
  2. Golang 的整型默认声明为 int 型,在程序查看某个变量的字节大小和数据类unsafe.Sizeof()函数可以返回变量占用的字节数
  3. Golang 程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型。
  4. bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。

小数类型/浮点型

小数类型分类

image.png

  1. 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位,说明:浮点数都是有符号的. image.png

  2. 尾数部分可能丢失,造成精度损失。 -123.0000901 image.png

说明:float64 的精度比 float32 的要准确. 说明:如果我们要保存一个精度高的数,则应该选用 float64 3) 浮点型的存储分为三部分:符号位+指数位+尾数位 在存储过程中,精度会有丢失

布尔类型

1:基本介绍

  1. 布尔类型也叫 bool 类型,bool 类型数据只允许取值 true 和 false
  2. bool 类型占 1 个字节。
  3. bool 类型适于逻辑运算,一般用于程序流程控制

string类型

1:基本介绍

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本

指针

1:基本介绍

  1. 基本数据类型,变量存的就是值,也叫值类型
  2. 获取变量的地址,用&,比如: var num int, 获取 num 的地址:&num
  3. 指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值比如:var ptr *int = &num
  4. 获取指针类型所指向的值,使用:*,比如:var ptr int, 使用ptr 获取 ptr 指向的值 2:案例
  5. 写一个程序,获取一个 int 变量 num 的地址,并显示到终端
  6. 将 num 的地址赋给指针 ptr , 并通过 ptr 去修改 num 的值.

image.png

3:指针使用细节

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

值类型和引用类型

1.值类型和引用类型的说明

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

标识符命名注意事项

1:包名:保持 package 的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和标准库冲突 fmt

2:变量名、函数名、常量名:采用驼峰法举例:var stuName string = “tom” 形式: xxxYyyyyZzzz ...

3:如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包使用 ( 注:可以简单的理解成,首字母大写是公开的,首字母小写是私有的) ,在 golang 没有public ,private 等关键字。

系统保留关键字

image.png

系统的预定义标识符

image.png