Go 语言入门指南:基础语法和常用特性解析| 青训营

123 阅读3分钟

一.基础语法:

       package main :导入main包,程序入口包。

       import(“fmt”):导入标准库中fmt包,用来屏幕输入输出字符串,格式化字符串。

       运行程序:go run helloworld.go

       编译成二进制:go build helloworld.go

       编译完成后:./helloworld 运行

      

字符串:内置类型,直接通过加号拼接,如 g :=”foo” ,可用等号直接比较两字符串相等。

       变量声明:

              1. var a=”initial” 自动推导变量类型 ,也可显式声明变量类型 ,如 var a, b int = 1, 2

              2. 使用变量名 :=值,如 f :=float32(e)

       常量:将var改为const 如 const s string = “constant”, 常量没有确定的类型,会根据前后文自动确定类型。

       判断语句:if后面没有小括号,必须有大括号

              switch:switch后变量名不需要括号,如switch a{…}

                     不同的是:switch中的case不需要加break,默认只跑符合的那一个。

                     switch后可以放任意类型变量,也可不写任何东西,当成ifelse来用,如

                     switch { case t.Hour()<12: fmt.Println(“…”)

       循环语句:只有for循环

              1. for{…} : 死循环

              2. for j :=7; j<9;j++{…} :正常循环 可用break,和continue。

       数组: var a [5]int ,  a[4]=100

       切片: 可变长度的数组,s :=make([]string, 3)  len()函数可查看数组的长度。

              append() 函数可以追加字符串,必须将append重新赋给原变量,如:s=append(s,”d”) 。因为如果容量不够,会发生扣容。

              c :=make([]string,len(s)) 可以直接指定长度

              copy(c,s)可以拷贝数值。

              s[2:5]:从二到五的值

       map: m :=make(map[string]int)  string是key值,int是值的类型,m[“one”]=1;

              delete(m,”one”) 删除key值

              r,ok :=m[“unknow”] 来获取map中有无该key值

              完全无序,随机的顺序

       range:nums := [] int{1,2,3,4}, 用在for循环中,for i , num := range nums{…} range返回两个值,第一个是下标,第二个是值,可以都接收,也可以只接收key值。

       函数:func +函数名,变量类型是后置的,

       指针:为了实现函数中地址传递,对变量能够改变有效。

       结构体:type user struct {

                            name string

                            password string

                     }

              结构体初始化: a :=user{name: “wang”,password: “1024”}

                                    a :=user{“wang”,password: “1024”}

              结构体方法:在func和函数名之间加上(u user),即采用结构体定义的方法,相当于C++中类成员函数的定义和使用。

       错误处理:采用error来返回错误,当error类型的参数不为nil时,代表发生了错误。

                    

   字符串操作:

       字符串格式化:fmt.Println 换行 fmt.Printf(“%v”,s) 可以用%v表示任何类型输出

                     %+v可以显示详细一些的信息,%#v可以显示更详细的信息。

       JSON处理:要保证结构体中变量开头大写,就可以通过json.Marshal(a) 来将结构体序列化。

       时间处理:time.Now() 获取当前时间,time.Date() 构造时间,t.Year(), t.Month()…

       字符串和数字之间的转换: 在strconv包下,需要先行导入

                     n,_ := strconv.ParseInt(“111”,10,64), 10代表十进制

                     也可以用strconv.Atoi(“123”) 来快速的把一个字符串转换成数字。