go语言基础

154 阅读3分钟

go语言的特点

1.高性能,高并发 2.语法简单,学习曲线平缓 3.丰富的标准库 4.完善的工具链 5.静态链接 6.快速编译 7.跨平台 8.垃圾回收

选择go语言的原因

1.python性能不行 2.c++不太适合在线web业务 3.早期团队非java背景 4.性能比较好 5.部署简单,学习成本低 6.内部RPC和HTTP框架的推广

go的基本语法

go语言中的hello world

package main
import "fmt"
func main() {
   fmt.Printf("hello world")

}
复制代码

package main表示这个文件属于main包程序的入口包 导入fmt包,主要是用来在屏幕上格式化输入字符串,输入输出字符串 而Printf是fmt包中的格式化输出字符串的一个函数

go语言的变量类型

string在go语言中属于内置类型,与其他语言进行区分 变量声明有两种方式 1.用var自动推导变量类型,必要时也可以显示的写出变量类型,如

var a=2
var b int=2
复制代码

2.用变量名 :=值来声明 a:=10

分支与循环

if else后的表达式不需要小括号,但必须要跟着一个花括号 if { } 像上面这样的格式 只有for循环,没有while do while

golang的swithch可以不加表达式而直接像if else的使用方式一样 例如

package main

import "fmt"

func main() {
   var a=2
   switch {
   case a<2:
      fmt.Println("a<2")
   default:
      fmt.Println("a>=2")
   }
}
复制代码

golang中的switch不需要break,执行完一个分支就会自动break

数组与切片

go的数组定义方式是var 数组名[]数组元素类型,数组的读写与c语言等语言是一致的下标都是从0开始

切片是一个动态的数组,可以用make来创建,用append来对数组进行拼接,但是append需要把值重新赋值给原切片,也可以直接用:=来创建

map

map需要两个类型,第一个是key的类型,第二个类型是val的类型,从而构成kv对,如 map=make(map[string]int) 可以用map[key]=val直接插入,用delete进行删除 map在go语言中是完全无序的

range

用range遍历可以遍历切片,map或者数组 range会返回两个值,第一个值是下标,第二个值是值

函数

go语言的函数大多数会返回两个值,一般会返回错误信息和真正所需要的返回值

指针

go语言可以简单的使用指针

*int代表整形指针,nil代表空指针

结构体

结构体和类相似,但也和C语言的结构体相似,可以直接在{}中进行赋值,未被赋值的字段会赋值为默认值 同样可以和类一样在结构体中定义方法*

异常处理

首先要引用“errors”包,并且在函数添加err error的类型返回值,但函数出现错误时,返回一个新New的error对象 go语言可以精确的知道哪里出现了错误,并且可以使用if和else俩简单的处理错误

字符串操作

go语言中的strings包中有很多字符串操作函数,在需要时可以查询文档来使用

字符串格式化

基本的输出函数Printf Printfln Print
可以直接%v可以打印元素类型,可以用%+v进一步打印,也可以用%#v进行更近一步的打印 也可以用%f等具体的格式化符

字符串和数字之间转换

解析字符串的包strconv,用Prase或者Ato来转换