企业网站东莞网站建设制作,网站app微信三合一,茂名网站建设方案外包,什么网站了解国家建设的行情目录
一、变量声明
二、流程控制
if#xff08;条件判断#xff09;
for#xff08;循环结构#xff09; Switch#xff08;简化if#xff09;
goto#xff08;跳出循环#xff09;
三、运算符
1、算数运算符
2、关系运算符
3、逻辑运算符
4、位运算符
5、…目录
一、变量声明
二、流程控制
if条件判断
for循环结构 Switch简化if
goto跳出循环
三、运算符
1、算数运算符
2、关系运算符
3、逻辑运算符
4、位运算符
5、赋值运算符
四、数组
1、数组的定义
2、数组的初始化
3、数组的遍历
五、切片
1、切片的定义和初始化
2、数组转切片
3、切片的容量
4、使用make()函数构造切片
5、append()
6、copy() 一、变量声明
1、函数外的每个语句都必须以关键字开始var/const/func等
2、: 只能在函数内使用
3、_ 多用于占位表示忽略值
4、const定义iota从0开始每增加一行自动1
const (_ iotaKB 1 (10 * iota)MB 1 (10*iota)GB 1 (10*iota)TB 1 (10*iota)PB 1 (10*iota)
)
5、八进制十六进制注Go语言无法直接定义二进制 //八进制0开头var ba int 027//十六进制0f开头var sa int 0xfa6、字符串Go语言中的字符串以原生数据类型出现类似int/bool/float32等。默认编码使用UTF-8
6、字符串转义符使用反引号内部是什么就输出什么不用加转义符 //反引号的作用内部写什么就输出什么不用加转义符s1 : C:\Users\230900013\go\srcs2 : C:\\Users\\230900013\\go\\src
二、流程控制
if条件判断 //m只在if判断内部生效n : 18if m : 12; m n {fmt.Println( m n, m, n)} else if m n {fmt.Println( m n, m, n)} else if m n {fmt.Println( m n, m, n)}
for循环结构 s : 1234567890for i : 0; i len(s); i {fmt.Printf(for循环基本格式 %c\n, s[i])}//Go没有while循环可以用for循环完成for {fmt.Println(for无限循环, s)}n : anfajakjfkasdjgnfor _, b : range n {fmt.Printf(for range循环 %c\n, b)} Switch简化if switch expr : 4; expr {case 2, 4, 6, 8:fmt.Println(expr, 是偶数)case 1, 3, 5, 7:fmt.Println(expr, 是奇数)default:fmt.Println(expr)}age : 36switch {case age 18:fmt.Println(age, 未成年人)case age 18 age 35:fmt.Println(age, 青年人)case age 35 age 55:fmt.Println(age, 中年人)fallthrough//表示向下穿透满足该case时也会执行下一个casecase age 55:fmt.Println(age, 好好享受退休生活吧)default:fmt.Println(age, 活着真好)}
goto跳出循环 flag : falsefor i : 0; i 10; i {for j : 0; j i; j {if j 5 {flag truebreak //跳出内层循环}fmt.Printf(%d - %d\n, i, j)}if flag {fmt.Printf(over\n)break //跳出外层循环}}for i : 0; i 10; i {for j : 0; j i; j {if j 5 {goto Lable}fmt.Printf(%d - %d\n, i, j)}}Lable:fmt.Println(这里用到了跳转)
三、运算符
1、算数运算符
、-、*、/、%、--在go语言中是单独的语言不能放在右边
2、关系运算符
、!、、、、
3、逻辑运算符
、||、
4、位运算符
参与运算的两数各对应的二进位相与
|参与运算的两数各对应的二进位相或
^参与运算的两数各对应的二进位相异或当两对应的二进位相异时结果为1
左移n位高位丢弃低位补0
右移n位
5、赋值运算符
、、-、*、/、%、、、、|、^
四、数组
1、数组的定义
var 数组变量名 [元素数量] T
var a [5]int
var b [5]bool
2、数组的初始化 //方法一var a [5]inta [5]int{0, 1, 2, 3, 4}fmt.Println(a)//方法二b : [...]int{0, 1, 2, 3, 4, 5, 6, 7}fmt.Println(b)//方法三根据索引初始化c : [5]int{0:5, 4:20}fmt.Println(c)
3、数组的遍历 //根据索引遍历str : [...]string{wo, ttt, fff, sss, rrr}for i : 0; i len(str); i {fmt.Println(str[i])}//for rangefor _, i : range str {fmt.Println(i)}
五、切片
1、切片的定义和初始化
var name []T var age []intvar name []stringage []int{18, 20, 5, 36}name []string{Linda, Lucy, Lily, Kity}var flag []bool{false, true, false, true}temp : []string{int, string, bool}
2、数组转切片 //左包含右不包含str : [...]string{wo, ttt, fff, sss, rrr, ooo, pip}a1 : str[1:4] //str取下标1-3的元素a2:str[:3] // 0-2b1:str[3:] // 3-len(str)c1:str[:] // 0-len(str)
3、切片的容量
切片的容量是指底层数组的容量
4、使用make()函数构造切片
make([] T, size, cap)
T切片的元素类型
size切片中元素的数量
cap切片的容量
//int类型切片长度5容量10
a:make([]int, 5, 10)
5、append() //int类型切片长度5容量10a : []int{0, 1, 2, 3}fmt.Printf(a%v, len%v, cap%v\n, a, len(a), cap(a))//append 之后容量会自动增加a append(a, 12)fmt.Printf(a%v, len%v, cap%v\n, a, len(a), cap(a))//将B切片追加到A切片 ...表示拆分b : []int{7, 8, 9, 10}a append(a, b...)fmt.Printf(a%v, len%v, cap%v\n, a, len(a), cap(a))
6、copy()
copy是深拷贝 : 赋值的方式是浅拷贝 str : []string{a, b, c, d, f}stra : strvar strb make([]string, 5, 10)copy(strb, str)fmt.Printf(str%v, stra%v, strb%v\n, str, stra, strb)str[0] testfmt.Printf(str%v, stra%v, strb%v\n, str, stra, strb)
7、删除
切片没有删除方法需要通过append操作间接实现删除元素操作。通过拼接删除的元素实际是被覆盖了原始指向的底层数组内容也被改变观察最终打印的arr可以清晰看到切片和底层数组之间的关系变化 arr : [...]int{1, 2, 3, 4, 5, 6, 7}s : arr[:]fmt.Println(s, len(s), cap(s))s append(s[0:1], s[2:]...)fmt.Println(s, len(s), cap(s))fmt.Println(arr)