古老的榕树

用 Go 开发终端接口服务--Go 语言基本语法

潘军杰 发表于 2019-05-14 15:03 阅读(2863) 评论(0) 赞(0)

Go 语言本身是一门极简的语言,它是 “大道至简” ,“少即是多” 理念的典范语言,而我们的接口服务用到东西又只是一小部分,所以学员需要掌握的基本语法是极少的。


Go 语言一共25个关键字,对于新手很容易记

关键字 关键字 关键字 关键字 关键字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var


Go 语言一共36个预定义标识符

标识符 标识符 标识符 标识符 标识符 标识符
append bool byte cap close complex
complex64 complex128 uint16 copy false float32
float64 imag int int8 int16 uint32
int32 int64 iota len make new
nil panic uint64 print println real
recover string true uint uint8 uintptr

常见的基本数据类型

基本数据类型 基本数据类型 基本数据类型 基本数据类型 基本数据类型
uint8 uint16 uint32 uint64 uint
int8 int16 int32 int64 int
bool byte string float32 float64


最常见的基本数据类型的使用

// 定义一个整数,默认值为 0
var i int
// 定义整数并赋值
var i int = 23
// 或者这样简洁定义
i := 23

// 定义64位的整数并赋值
var i64 int64 = 1024
// 或者这样简洁定义
i64 := 2048

// 定义64位的浮点数
var f64 float64 = 3.141516
// 或者这样简洁定义
f64 := 3.141516

// 定义字符串,默认值为空字符串
var s1 string
// 定义字符串并赋值
s2 := "this is a string"


slice 和 map 是最常见的复合数据类型

// 定义一个 slice 数据类型
s := []int{6, 3, 9, 8, 1, 5}
// slice 取值
s[0]
s[2]
...

// 定义两个 map 数据类型,其实它们就是键值对,键值对可以是任何基本数据类型
m1 := map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e", 6: "f"}
m2 := map[string]int{"k1": 2, "k2": 3, "k3": 4}
// map 取值
m1[1]
m1[2]
m2["k1"]
m2["k2"]
...


if 判断语句的使用

// 定义两个整数并赋值
a := 23
b := 25

// if 判断语句
if a > b {
    fmt.Printf("%d > %d\n", a, b)
} else if a < b {
    fmt.Printf("%d < %d\n", a, b)
} else {
    fmt.Printf("%d == %d\n", a, b)
}


for 循环语句的使用

// 定义一个 slice 数据类型
s := []int{6, 3, 9, 8, 1, 5}
// 循环遍历一个 slice 数据
for i, l := 0, len(s); i < l; i++ {
    fmt.Printf("slice elem%d is %d\n", i, s[i])
}

// 定义一个字典数据类型
m := map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e", 6: "f"}
// 循环遍历一个字典数据
for k, v := range m {
    fmt.Printf("map key%d is %s\n", k, v)
}


结构体嵌套,在结构体里很好用,类似于两个实体之间的继承,我们把结构体公共的属性,集中定义在一个基类结构体里,嵌套到其他结构体里,可以省不少的代码,实际项目中,我们经常用到。
// BaseField 基类结构体
type BaseField struct {
	ID      int64
	Created time.Time
	Updated time.Time
}

// User 用户结构体
type User struct {
	BaseField //嵌套基类结构体
	UserName  string
	Password  string
	Sex       int
	Status    int
}


多返回值函数,是非常棒的东西,习惯了后,感觉其他语言上没有多返回值函数,真的非常不方便。在 Go 开发的项目中,随处可见,最常见的就是一个函数既返回数据,又返回错误信息。

// GetUser 多返回值函数
func GetUser() (*User, error) {
	user := User{
		BaseField: BaseField{
			ID:      1,
			Created: time.Now(),
			Updated: time.Now(),
		},
		UserName: "abc",
		Password: "password",
		Sex:      1,
		Status:   1,
	}
	return &user, nil
}

// MulRetVal 多返回值函数
func MulRetVal() (int, string) {
	return 1, "success!"
}


小结

Go 的语法相比 C 语言,简化了不少,它对于我们记忆相当友好。25个关键字和36个预定的标识符,组成了 Go 语言主要的语法基础,相对其他语言已经相当精简了。和其他语言一样,在实际项目中,用到的关键字会更少,有相当部分的关键字和标识符是不常用了,本章代码示例,就是项目经常用到基础语法,读者如果之前了解过 Go 语言,只要看一遍,就可以掌握了。



《用 Go 开发终端接口服务》 目录

0 条网友评论

哇~~~ 竟然还没有评论!

称呼*
邮箱*
内容*
验证码*
验证码 看不清换张