Go语言基础语法进阶
结构体方法
在 Golang 里面可以为结构体去定义一些方法,会有一点类似其他语言里面的类成员函数。比如这里,我们把上面一个例子的 chekPassword 的实现,从一个普通函数,改成了结构体方法。这样用户可以像 a.chekPassword("xx") 这样去调用。具体的代码修改,就是把第一个参数,加上括号,写到函数名称前面。
在实现结构体的方法的时候也有两种写法,一种是带指针,一种是不带指针。它们的区别:如果带指针,那么就可以对这个结构体去做修改;如果不带指针的话,那实际上操作的是一个拷贝,你就无法对结构体进行修改
错误处理
错误处理 在go语言里面符合语言习惯的做法就是使用一个单独的返回值来传递错误信息。
不同于 Java 自家家使用的异常。go语言的处理方式,能够很清晰地知道哪个函数返回了错误,并且能用简单的 if else 来处理错误。
在函数里面,我们可以在函数的返回值类型里面,的最后面加一个 error,就代表这个函数可能会返回错误。
那么在函数实现的时候,retum 需要同时 return 两个值,要么就是如果出现错误的话,可以 return nil 和一个 error,如果没有的话,那返回原本的结果和 nil。
字符串操作
go语言中的字符串操作。在标准库 strings 包里面有很多常用的字符串工具函数,比如 contains 判断一个字符审里面是否有包含另一个字符串,count 字符串计数, index 查找某个字符串的位置。join 连接多个字符串 ,repeat 重复多个字符串, replace 替换字符串。
字符串格式化
字符串格式化。在标准库的FMT包里面有很多的字符串格式相关的方法,比如printf这个类似于c语言的printf函数。不同的是,在go语言里面的话,你可以很轻松的用 %v 来打印任意类型的变量,而不需要区分数字字符串。你也可以用 %#v 则更详细。
JSON处理
JSON操作。go语言里面的 JSON 操作非常简单,对于一个已有的结构体,我们可以什么都不做,只要保证每个字段的第一个字母是大写,也就是是公开字段。那么这个结构体就能用 JSON.marshaler 去序列化,变成一个 JSON 的字符串。
序列化之后的字符串也能够用 JSON.unmarshaler 去反序列化到一个空的变量里面。
这样默认序列化出来的字符串的话,它的风格是大写字母开头,而不是下划线。我们可以在后面用 json tag 等语法来去修改输出 JSON 结果里面的字段名。
时间处理
时间处理,在go语言里面最常用的就是 time.now() 来获取当前时间,然后你也可以用 time.date 去构造一个带时区的时间,构造完的时间。
上面有很多方法来获取这个时间点的年月日小时分钟秒,然后也能用点 sub 去对两个时间进行减法,得到一个时间段。时间段又可以去得到它有多少小时,多少分钟、多少秒。
在和某些系统交互的时候,我们经常会用到时间戳。那您可以用 .UNIX 来获取时间戳。
time.format按给定格式的字符串对时间进行格式化
time.parse两个参数,第一个参数是目的时间格式,第二个参数,会按给定的一个参数的格式解析第二个字符串。
数字解析
在 go 语言当中,关于字符串和数字类型之间的转换都在 STR conv 这个包下,这个包是 string convert 这两个单词的缩写。我们可以用 parseInt 或者 parseFloat 来解析一个字符串。 parseint 参数
我们可以用 Atoi 把一个十进制字符串转成数字。可以用 itoA 把数字转成字符串。
如果输入不合法,那么这些函数都会返回error
进程信息
在 go 里面,我们能够用 os.argv 来得到程序执行的时候的指定的命令行参数。
比如我们编译的一个 二进制文件,command。 后面接 abcd 来启动,输出就是 os.argv 会是一个长度为 5 的 slice,第一个成员代表二进制自身的名字。
我们可以用 so.getenv来读取环境变量。
Exec 是 os 包中的一个子包,它可用于使用 Go 运行外部命令。Go exec 命令教程展示了如何在 Golang 中执行 shell 命令和程序。
要使用这个包,我们需要按如下方式导入:
import "os/exec"
然后使用 GoLang exec 包运行命令