golang语法基础|青训营笔记

75 阅读4分钟

Go语言学习第一课——语法基础

 

1. 一个go程序由以下几部分组成

a. 使用的包名,揭示了这个文件所在的包的名称 package main

b. 引用的库 import “fmt”’

c. 函数func main(){

函数的语句

}

 

一个helloworld的程序例子

//hellowor.go代码

 

注意func main(){中的{不可以单独放在一行,否则会报错

程序中的fmt.Println 类似于java中的System.out.println();将括号中的字符串或者变量输出在

控制台并且换行。fmt.Print类似于System.out.print();

 

如果想为您的代码添加注释,您可以使用//进行单行注释,使用一对/*  */进行多行注释

2. 在go程序中,每一行代表着一个语句结束,如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。

3. 变量的名字不可以用数字开头,不可以用go语言的关键字或者保留字来作为go语言的变量名,变量名中不可以出现运算符

4. 如果要连接字符串,可以通过 + 来进行连接fmt.Println(“Hello+ “ ” + “world!”) 输出结果为Hello world!

5. Go语言可以格式化字符串,与c语言不同的是,go语言的标识符可以在变量中使用

如”String=%s”,使用fmt.Sprintf(注意是Sprintf不是Sprint)或者fmt.Printf来格式化字符串。fmp.Sprintf()用于根据格式化参数生成格式化字符串并且返回参数,Printf根据格式化参数生成格式化字符串并直接输出

//格式化输出代码go1.go

6. golang中定义变量的方法:

var a = “value”

var b,c int= 1,2

var d = true

e := 100

var f float64

g :=float32(f)

7. goalng里面的if-else

if 表达式{

语句

}else if 表达式{

}else{

...

}

8. golang里的for循环

死循环for后面直接大括号不加条件,然后加执行语句

for{

fmt.Println(“死循环”)

}

条件循环for后面空格加for循环条件

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

Fmt.Println(“hello world”)

}

for循环中可以用continue和break来控制循环的运行

9. golang里面的switch

switch a{//a是一个常量

case 1:

...

case 2:

...

case 3:

...

default:

..

}

switch跑到符合条件的那个语句之后会自己跳出整个switch,不需要break来跳出

10. 数组

用var 名字[长度]数据类型 定义数组

如var a[10]int

然后可以指定位置添加数组的值a[0]=0

其他数组定义方法:b:=[6]int{0,1,2,3,4,5}

var 名字[行数][列数]数据类型  定义二维数组

var c[2][3]int

11. 切片

是动态数组

可以声明一个未指定大小的数组来定义切片

var i []int或者i := []int{1,2,3}

或者用make()来创建切片

Make(数组名字,数组长度,数组容量)

S :=make([]int,3)

S[0]=1

S[1]=2

S[2]=3

可以用len(切片名)返回切片元素个数

可以用append(切片名,值)增加切片元素

在此之后要将它赋值给原数组

即以下:s = append(s,4,5,6,7)//s=就是将更新的结果赋值给原数组 的过程

Append()是更新的过程

可以取出切片中任意一段连续的部分

S[:3]//取0到3位,即1234

S[2:3]//取2-3位,就是34

12. Map

可以用make创建一个空map

m:=make(map[string]int)

M[“one”]=1

M[“two”]=2

Map是储存键值对的map的string是它的键而后面的int是他的值

其他创建map的方法

M2 :=map[string]int{“one”:1,”two”:2}

Var m3=map[string]int

13. Range

一个关键字可以用于简化代码,用于遍历动态数组

会返回两个值,一个是键,另一个是键对应的值

如便历上面的map

For s,n:= range m{

Fmt.Println(s,“:”,n)

}

输出的就是one:1

two:2

不需要键的话可以下划线忽略

14. golang自定义函数

Go语言自定义函数支持返回多个值

事件业务逻辑代码中一般返回两个值,一个是需要返回的值,另一个是错误信息

写法

Func 函数名(参数 参数类型,参数2 参数2类型)(返回值 返回类型,返回值 返回类型){

...

Return a,b

}

Func add(a int ,b int)int{

Return a+b

}

15. 指针

可用于参数的修改,可以在函数中直接修改参数的值而不用借助返回值

Func add2(n *int){

*n+=2

}

这样直接对变量的指针对应的值进行自增

调用时为了类型匹配加个取址符add2(&n)

16. Json处理

如果一个结构体的所有字段都是公开的就可以将他变成一个json字符串

结构体type userinfo struct{

Name string

Age int

}

a:=userinfo{Name :”liang”,Age:20}

buf,err:=json.Marshal(a)//方法返回两个值,buf是json字符串,err是错误信息

If err!=nil{

panic(err)//抛出异常

}

Fmt.Println(buf)

Fmt.Println(string(buf))//没问题正常打印