Golang基础学习笔记01

day01

一、基础

1. //单行注释

2. /*

多行注释

*/

3. 语句结尾没有分号

4. 调用函数大部分需要导入包

5. 左括号必须与函数名同行

6. 程序必须有一个main包

7. go语言以包做为管理单位

8 每个文件必须先声明包

二、变量

9. 变量命名规范

1>字母、下划线、数字组成

2>不能以数字开头

3>不能为关键字

4>区分大小写

10. 变量声明了必须得使用

11. var 变量名 类型(var a int)

var a=10

12. 同一大括号里声明的变量名是唯一的

13. 可同时声明多个变量var 变量名1,变量名2…… 类型

14. 自动推导类型(常用 *,也是一种声明方式)

c := 30

fmt.Printf("c Type is %T\n") %T打印变量所属类型

15. 多重赋值

a , b ,c := 10,20,30

变量值交换

a,b := 10,20

a,b = b,a

16. _匿名变量,丢弃数据不处理。

a, b := 10, 20

temp, _ := a, b

fmt.Println(temp) 10

fmt.Println(a) 10

fmt.Println(b) 20

匿名变量配合函数返回值使用,才有优势

func test(a ,b ,c int){

return 10, 20,30

}

var i,j ,k

i,j,k = test()

i,_,k=test()

17. 多个变量定义

var(

a int

b float

)

var(

a int =1

b float =1.1

)

自动推导类型

var(

a =1

b =1.1

)

三、常量

18. 常量声明 const 常量名 类型(var a int)

const a = 10

19. 多个常量定义

const(

a int

b float

)

const(

a int =1

b float =1.1

)

自动推导类型

const(

a =1

b =1.1

)

四、枚举

20. iota常量自动生成器,第个一行 ,自动加1

21. iota给常量赋值使用

22. const (

a = iota //0

b = iota //1

c = iota //2

)

//iota遇到const重置 为0

const d= iota //0

23.//可以只写一个iota

const(

a = iota //0

b //1

c //2

24. iota同一行,值都一样

const(

i=iota //0

j1,j2,j3=iota,iota,iota //j1,j2,j3都为1

k=iota //2

)

 

五、数据类型

25.

类型 名称 长度 默认值 说明

bool 布尔 1 false 不可用数字代表

byte 字节 1 0 uint8(主要用于放英文字符)

rune 字符 4 0 uint32(存储unicode编码如中文)

int/uint 整型 4或8 0 32位或64位

int8/uint8 整型 1 0 -128~127/0~255

int16/uint16 整型 2 0 -32768~32767/0~65535

int32/uint64 整型 4 0 -21亿~21亿/0~42亿

int64/uint64 整型 8 0

float32 浮点 4 0.0 32位浮点(小数位精确到7位)

float64 浮点 8 0.0 64位浮点(小数位精确到15位)

complex64 复数 8

complex128 复数 16

uintptr 整型 4或8 足于存储指针的uint32或uint64整数

string 字符串 "" utf-8字符串

 

26. 浮点

var a float32 =3.14

b := 3.14

b的类型为float64。float64比float32精度要高

 

27. byte字符

//结果是一样的

var a byte

a=97

a='a'

fmt.Printf("%c,%d\n") //%c以字符方式打印,%d以整型方式打印,直接打印为ASCII码

//大小写转换直接可以通过+进行

'A'+32

'a'-32

 

28. 字符串

字符串隐藏了一个结束符“\0”

var str string

str="zhao"

fmt.Println(len(str)) //结果为4。len是一个内建函数可以计算字符串长度,有多少个字符

fmt.Println(str[0]) //z

fmt.Println(str[1]) //h

fmt.Println(str[3]) //0

 

29. 复数类型

var t complex128

t=2.1+3.14i

fmt.Println(t) // (2.1+3.14i)

fmt.Println(real(t)) //输出实部 2.1

fmt.Println(imag(t)) //输出虚部 3.14

30. 键盘输入

fmt.Scanf("&d",&a)

fmt.Scanf(&a)

 

31. 类型转换

不是所有类型都可以转(相互兼容的才可以转)

bool不能和int相互转换

byte和int可以转换

var ch byte

ch='a'

var a int

a=int(ch)

32. 类型别名

type bigInt int64 //给int64取个别名为bigInt

var bigInt a //等价于 int64 a

fmt.Printf("%T",a) // main.bigInt

 

type( //取多个别名

bigInt int64

char byte

)

 

 

六、结构运算

33. 算术运算符

运算徐 术语 示例 结果

+ 加 1+1 2

- 减 2-1 1

* 乘 1*3 3

/ 除 4/2 2

% 取模余 10%3 1

++ 后自增,没有前自增 a=0;a++ 1

-- 后自减,没有前自减 a=2;a-- 1

 

34. 关系运算符

运算徐 术语 示例 结果

== 等于 4==3 false

!= 不等于 4!=3 true

< 小于 4<3 fasle

> 大于 4>3 true

<= 小于等于 4<=3 false

>= 大于等于 4>=3 true

35. 逻辑运算符

运算徐 术语 示例 结果

! 非 !a a为true时false,a为false时true

&& 与 a&&b a和b都为是时true,否则为false

|| 或 a||b a和b有一为真时true,否则false

36. 位运算符

运算徐 术语 示例 结果

& 按位与

| 按位或

^ 异或

<< 左移 左移n位,相当于乘以2的n次方,左边弃位,右边补位 4<<2 ,=16

>> 右移 右移n位,相当于除以2的n次方,右边弃位,左边补位 4>>2 ,=1

 

37. 赋值运算符

 

运算徐 示例 说明

= 普通赋值

+=

-=

*=

/=

%=

<<=

>>=

&=

|=

^=

 

38. 选择结构(if语句)

 

str := "zhao"

if str == "zhao"{

fmt.Println("哈哈") //输出 哈哈

}

 

if支持一个初始化语句

if str:="zhao";str == "zhao"{

fmt.Println("哈哈") //输出 哈哈

}

 

分支

if str:="zhao";str == "zhao"{

fmt.Println("哈哈") //输出 哈哈

} else{

fmt.Println("不等于")

}

 

分支

if str:="zhao";str == "zhao"{

fmt.Println("哈哈") //输出 哈哈

} else if str == "hao"{

fmt.Println("不等于")

}else{

fmt.Println("都不等于")

}

 

39. 选择结构(switch语句)

break:默认不写

fallthrough与break一样,但是不会跳出switch语句(而且后面无条件执行)

支持一个初始化语句switch a:=10;a

 

num := 3

switch num{

case 1:

fmt.Println("1")

case 2:

fmt.Println("2")

case 3:

fmt.Println("3")

default:

fmt.Println("其他")

}

 

case后可以跟 多个

num := 3

switch num{

case 1,2,3:

fmt.Println("1")

case 4:

fmt.Println("2")

case 5,6:

fmt.Println("3")

default:

fmt.Println("其他")

}

 

 

可以加条件

num := 3

switch {

case num >1:

fmt.Println("1")

case num >2:

fmt.Println("2")

case num >3:

fmt.Println("3")

default:

fmt.Println("其他")

}

 

40. 循环结构(for语句)

sum := 0

for i := 0; i<=100: i++{

sum+=i

}

fmt.Println(sum)

 

41. 循环结构(range语句)

迭代语句配合数组和切分使用

 

str := "abcd"

 

for i := 0; i < len(str); i++ {

fmt.Printf("%c\n", str[i])

}

 

//迭代返回两个值,一个是元素位置(i),一个是元素本身(data)

for i, data := range str {

fmt.Printf("%d,%c\n", i, data)

}

 

//只返回元素位置,元素本身默认丢弃

for i := range str {

fmt.Printf("%c\n", str[i])

}

 

for i, _ := range str {

fmt.Printf("%c\n", str[i])

}

 

42. 跳转语句(break和continue和goto)

break可用于for、switch、select

continue只能用于for循环

goto能用玩任何地方,但是不能跨函数(使用注意可能会造成死循环)

 

i :=0

for{ //for后面不写条件,就是循环

i++

if i==5{

break; //跳出最近的内循环

continue: //跳过本次循环

}

fmt.Println(i)

}

 

 

fmt.Println("begin")

goto End

fmt.Println("end")

 

End:

fmt.Println("goto End")

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值