util 用于定义常用函数 让其他文件来调用
db 定义对数据库操作的函数
打包基本语法:package 包名
引入包基本语法,import "包路径"
使用包函数
包名.函数名()
接口的基本语法 type 接口名称 interface{
//方法
method(参数列表)返回值列表
}
接口里面的方法没有全实现,会报错
指针
值类型包括:基本数据类型int系列,float系列,bool,string、数组和结构体(struct)
引用类型:指针、slice切片、map、管道chan、interface等
基本数据类型,变量存的就是值,也叫值类型
基本数据类型在内存中的布局
地址是&i,
指针类型,指针变量存的是一个地址 ,这个地址指向的空间存的才是值
指针在内存的布局
var ptr *int = &i
ptr 是一个指针变量
ptr 的类型*int
ptr 本身的值&i
类型
值类型包括:基本数据类型int系列,float系列,bool,string、数组和结构体(struct)
值类型:变量直接存储值,内存通常在栈中分配
引用类型包括:指针、slice切片、map、管道chan、interface等
引用类型:变量储存的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆区分配
获取用户终端输入
Scanln
fmt.Println("请输入年龄") fmt.Scanln(&age)
scanf
fmt.Scanf("%s %t", &name,&isto) fmt.Printf("%v,%v", name, isto)
位运算
程序流程控制
标签:case,遍历,入门,数据类型,fmt,基础,Golang,switch,表达式 From: https://www.cnblogs.com/lzhnx/p/16862117.html顺序控制 程序从上到下地执行,中间没有任何判断和跳转
分支控制
单分支控制
- 基本语法 if 条件表达式 { 执行代码 } 需求—>分析—> 代码
双分支多分支
switch 分支 (默认有break)
在golang中case后面可跟多个表达式,用逗号隔开
switch 细节讨论:
1)case后是一个表达式(常量值、变量、一个有返回值的函数都可以)
2)case后的各个表达式的值的数据类型,必须和switch的表达式数据类型一致
3)case后面可以带多个表达式,使用逗号间隔
4)case后面的表达式如果是 常量值,则要求不能重复
5)case后面不需要带break
6)default 语句不是必须的
7)switch后也可以不带条件表达式,类似if else 使用
8)switch 后也可以直接声明/定义一个变量,分号结束
9)switch 穿透 fallthrough,如果在case语句块后增加fall through,则会继续执行下一个case,也叫switch穿透 默认只会穿透一层
10)Type Switch:switch 语句还可以被用于type-switch来判断某个interface变量中实际指向的变量类型 (判断空接口的数据类型)
循环控制
for循环的细节讨论
1)循环条件是返回一个布尔值的表达式
2)第二种写法
3)第三种写法 字符串遍历
- 字符串遍历方式1-传统方式
var str string = "hello,world河北"
for i := 0; i < len(str); i++ {
fmt.Printf("%c\n", str[i]) //使用到下标
}
细节:如果我们字符串含有中文,那么传统的遍历字符串方式,就是错误,会出现乱码。原因是传统的方式对字符串的遍历是按照字节来遍历,而一个汉字在utf8编码是对应3个字节
字符串遍历的方式2-for-range
var str1 = "abc=ok保定1"
for i, l := range str1 {
fmt.Printf("index=%d,value=%c", i, l)
}
4)嵌套循环