Go语言的优点
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
基础语法
- Hello World
fmt.Println("Hello World")
-
变量:在Go语言中,变量是程序中最基本的存储单元之一。每个变量都有一个类型和一个值,变量的类型用于定义其可以存储的值的范围和操作。变量的值可以随时更改,因此Go语言中的变量是可变的。 在Go语言中定义变量的语法如下:
var x int // 定义一个整数变量 var y float32 // 定义一个浮点型变量 var z string // 定义一个字符串变量 var a, b, c bool // 定义三个布尔型变量在Go语言中,还可以使用短变量声明语法来快速定义变量并初始化。
x := 10 // 定义一个整数变量并初始化为10 y := 3.14 // 定义一个浮点型变量并初始化为3.14 z := "Hello, world!" // 定义一个字符串变量并初始化为"Hello, world!" a, b, c := true, false, true // 定义三个布尔型变量并初始化为true、false、true -
if else
if condition { // 在条件成立时执行的语句块 } else { // 在条件不成立时执行的语句块 } -
循环:Go语言提供了多种循环语句,包括
for、while和do...while等。其中,for语句是最常用的循环语句。for initialization; condition; post { // 在条件成立时执行的语句块 } -
Go语言中的switch语句用于根据不同的条件执行不同的代码块。
switch variable { case value1: //当variable等于value1时执行的代码块 case value2: //当variable等于value2时执行的代码块 default: //当variable不等于任何一个值时执行的代码块 } -
数组:是一种固定大小、存储相同类型元素的容器。
var array [size]type -
切片:是一种动态数组。
var slice []type其中,type表示切片中存储的元素类型。与数组不同的是,切片的长度可以动态改变,而且存储空间由Go语言自动管理。 切片可以通过数组、指针或切片自行创建,并且可以使用make函数进行初始化。
-
map:是一种无序的键值对集合。
var mapName map[keyType]valueType -
ange 关键字用于遍历数组、切片、map以及通道中的元素。
for index, value := range collection { //循环体 } -
函数
func function_name(parameter_list) (result_list) { //函数体 } -
指针:一种用于存储变量内存地址的类型。指针通常用于传递函数参数、访问数组和结构体等场景。
var ptr *type -
结构体:一种自定义的数据类型,代表了一组相关的属性和方法。结构体可以包含多个字段,每个字段可以是不同的类型。
type struct_name struct { field_name1 type1 field_name2 type2 ... } -
结构体方法:结构体还支持方法,可以使用函数的方式进行定义。例如,为矩形增加一个计算面积的方法。
func (r *Rectangle) area() float64 { return r.width * r.height } fmt.Printf("矩形1的面积为%f\n", rect1.area()) fmt.Printf("矩形2的面积为%f\n", rect2.area()) -
错误处理:一种常见的程序设计方式。Go语言中的错误通常用错误接口类型(error interface)表示。这个接口只包含一个方法:
type error interface { Error() string }如果函数返回一个非空的error接口,则说明函数出现了错误。在函数中通常使用errors.New()或fmt.Errorf()函数来创建一个新的error对象,例如:
func divide(x, y float64) (float64, error) { if y == 0 { return 0, errors.New("除数不能为0") } return x / y, nil } -
字符串:一种基本数据类型,通常用于表示文本内容。在Go语言中,字符串使用双引号或反引号括起来。
str1 := "hello, world" str2 := `这是一段 多行 字符串` -
字符串格式化:使用fmt包中的Printf()函数实现
func Printf(format string, args ...interface{}) (n int, err error)其中,format参数是一个字符串,包含零个或多个占位符;args参数是一个不定长的interface类型切片,包含要替换占位符的值。 下面是几个常见的占位符及对应的格式化输出:
- %v:以默认格式打印变量的值。
- %T:打印变量的类型。
- %t:打印布尔型变量的值。
- %d:打印十进制整数。
- %x:打印十六进制整数。
- %f:打印浮点数。
- %s:打印字符串。
- %p:打印指针地址。
- %%:打印百分号。
-
JSON 处理
Go语言内置的encoding/json包提供了解析、生成和转换JSON数据的功能。 将Go语言中的数据编码为JSON格式,可以使用encoding/json包中的Marshal()函数进行处理。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := Person{"Bob", 30} jsonByte, _ := json.Marshal(p) fmt.Println(string(jsonByte)) // 输出: {"name":"Bob","age":30} } -
要获取当前时间,可以使用time.Now()函数。