本文是参考多篇 Golang 教程文章而组织出的入门教程,旨在帮助开发者快速上手 Golang。
参考文章:
数据类型
- 借助工具实现一些数据类型转换: ```go package main
import ( “fmt” “strconv” “strings” )
func main() { /**
* 字符串数组 -> 字符串*/ary := []string{"W", "J", "T"}fmt.Println(strings.Join(ary, ""))/*** 数字 -> 字符串*/num := 10fmt.Println(strconv.Itoa(num) + " am") // 拼接一个字符串,表示数字已转换为字符串
}
<a name="8ZwFW"></a>## 语言变量与常量参考《[Go 语言变量](http://codingdict.com/article/6750)》、《[Go 语言常量](http://codingdict.com/article/6751)》等文章。```go// 这种不带声明格式的只能在函数体中出现g, h := 123, "hello"// 这种只能出现在全局变量中,函数体内不支持var (a intb bool)
函数
参考《Go 语言函数》一文。
数组
参考《Go 语言数组》、《Go 系列教程 —— 11. 数组和切片》、《Go 语言切片(Slice)》等文章。
- 基础操作: ```go package main
import “fmt”
func main() { var ary1 [5]int // 声明一个长度为5的int类型数组 var ary2 = []int{1, 2, 3, 4, 5} // 声明并初始化一个int类型数组,不用声明长度
/*** 指定长度但未初始化数组,以0填充之*/fmt.Println(ary1, ary2) // [0, 0, 0, 0, 0] [1, 2, 3, 4, 5]/*** 使用for range遍历数组,输出:* 0: 1* 1: 2* 2: 3* 3: 4* 4: 5*/for index, item := range ary2 {fmt.Printf("%d: %d\n", index, item)}
}
2. 切片:```gopackage mainimport "fmt"func main() {var slice1 []string // 定义切片/*** 切片未初始化前等于nil,长度为0*/fmt.Println(slice1, slice1 == nil) // [] truestrAry := []string{"A", "B", "C", "D", "E", "F"} // 数组slice1 = strAry[1:3] // 切片: ["B", "C"]/*** len()获取切片当前长度;* cap()获取切片可达到的最大长度;*/fmt.Println(len(slice1), cap(slice1)) // 2 5/*** 使用append()往切片追加元素*/slice1 = append(slice1, "G", "H")fmt.Println(slice1) // ["B", "C", "G", "H"]/*** 使用copy()实现切片拷贝*/slice2 := make([]string, len(slice1), cap(slice1)) // 使用make()创建切片copy(slice2, slice1)fmt.Println(slice2) // ["B", "C", "G", "H"]}
- 二维数组:
ary := [][]string{{"name Like", "%ABC%"},}
指针
参考《Go 语言指针》一文。
结构体
参考《Go 语言结构体》一文。
结构体与指针结合,可实现动态改变一个结构体变量的值。
集合
参考《Go 语言Map(集合)》一文。
package mainimport "fmt"func main() {/*** 集合的初始化*/map1 := make(map[string]string)map1["uuid"] = "aceghopljs1"map1["userName"] = "WJT"/*** 遍历集合,输出:* uuid: aceghopljs1* userName: WJT*/for key := range map1 {fmt.Printf("%s: %s\n", key, map1[key])}/*** 删除map中的一个键值对*/delete(map1, "userName")fmt.Println(map1["userName"]) // ""}
字符串操作
参考《golang 字符串》一文。
包
参考《golang import基础》一文。
Golang 支持通过相对路径、绝对路径的形式导入指定位置的包:
import "./model" // 当前文件同一目录的model目录,但是不建议这种方式importimport "shorturl/model" // 加载GOPATH/src/shorturl/model模块
import 的同时,还能对引入的包进行以下操作:
// 点操作,导入该包后,调用其中的api,可以省略前缀的书写import(. "fmt")// 别名操作,给引入的包重新定义一个名字,主要避免变量污染问题import(baseModel "locusts-go-server/model")// _操作,仅仅执行其中的init()函数,而无视包的内容import(_ "github.com/jinzhu/gorm/dialects/mysql")
