这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
go语言基本语法和数据类型
-
格式化字符串Sprintf的使用方法—其他转为字符串
-
标准Api文档库
-
若干数据类型及其默认值:0,false,“”,nil(记一下)
-
变量声明的3种方式:
- var 标识符 type—若没有初始化就是默认值
- var 标识符 = value
- := 局部变量的初始化
-
:=的注意事项
- 局部变量的声明
- 声明就必须使用(全局变量没有这个限制)
- a, b = b, a —交换a与b的值
- ‘-’ 接收没有用处的局部变量
go 语言常量、基本数据类型、字符串转化
-
常量使用const定义,且可以使用一些内置函数
len(),cap(),unsafe.Sizeof()- iota:可以被编译器修改的一种特殊常量(记录const定义的常量的数量,可以被用作枚举变量)
-
格式化函数Printf的使用与fmt包中的格式化标准息息相关
-
字符串:由一个个字符拼接而成(不可修改)
- 用双引号标识
- 用反引号标识(原生字符串的形式,防止攻击)
-
基本数据类型的转换:()
-
string与基本数据类型
-
string→基本数据类型:int strcona.ParseInt(str, base, bitSize)
-
基本数据类型→string:
- strcona.Iota(num)
- func Sprintf(format string …)
-
-
Scanning的Scan和Sscan家族
指针、运算符和位运算
-
指针变量
**var a = 10 var ptr *int //定义一个int型的指针 ptr = &a; //a的地址赋值给指针ptr fmt.Printf("%d", *ptr) //访问存储在地址中的值 1.空指针的值输出为0,但其实为nil 2.两个指针变量ptr1和ptr2,ptr1 = ptr2,若修改ptr2的值,ptr1的值也会被修改 ptr = &num *ptr = 10 //此时会将num的值修改为10** -
遇到暂时没有使用的包,可以在报名前面加上
’_’以示忽略,防止报错 -
值类型和引用类型
- 值类型包括:基本数据类型 int系统,float系列,bool,string,struct和结构体。
- 引用类型:指针,slice切片,map,管道chan,interface等
- 值类型存储在栈中,引用类型存储在堆中
-
标识符命名规范
- 变量名、函数名、常量名首字母大写,则可以被导出,否则不可以
- 遵循驼峰法
-
运算符
-
算术运算符:+,-,*,/,%,++,- -
- /:向下取整
- 自增,自减独立成行且不存在++i或者- -i
-
关系运算符:==, ! =, >, <, > =, < =
-
逻辑运算符:&&, ||, !,存在短路
-
不存在三元运算符,用if完成
-
位运算符:&, |, ^, <<, >>,补码运算
-
-
键盘输入:Scan家族的标准输入,Sscan家族的字符串输入
package main import "fmt" fun main(){ var name string var age int var mf bool fmt.Println(请输入姓名,年龄,性别) //方式一 fmt.Scanln(&name) fmt.Scanln(&age) fmt.Scanln(&mf) //方式二 fmt.Scanf("%s %d %f %t",&name,&age,&mf) //方式三 fmt.Scan(&name,&age,&mf) } -
进制的输入输出:基本与c类似,Python中的进制转换及其方便
-
流程控制:if else
- }与else不分行
- 在if后面也可以声明变量,类似c/java中的int i = 0;
- if或者else后面即使只有一行也需要{}
- 判断闰年
if year:= 2019;(year %4 ==0 && year %100 !=0)||year%400 == 0{ fmt.Println(year,"是闰年") } //直接