这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天。
Go语言基础语法三:
1、指针:
相比于C/C++语言中指针的强大,Go语言中的指针支持的操作有限,一个主要的用途是对于传入参数进行修改,传递数据可以使用指针而不需要拷贝数据,不能进行偏移和运算。指针的使用例子:
func add(n *int) {
*n += 2
}
func add1(n int) {
n += 2
}
func main() {
n := 5
add1(n)
fmt.Println(n)
add(&n)
fmt.Println(n)
}
输出结果为5、7,从而可以说明在进行传参的时候,执行的拷贝操作,使用指针类型,在进行传参的时候加入&符号则相当于将地址传入,在函数对于值进行更改的时候,则会直接在传入的地址上进行值的更改,从而则会对值进行更改,故而产生了上面两种结果,在进行调用add函数的时候可以对n进行+2操作,n的大小变为了7,而在先调用add1函数的时候,传入的值是对于原值的拷贝,进行操作的时候是拷贝的值,而非原值,故而输出的时候n=5。
2、结构体:
结构体是带类型的字段的集合,和C/C++语言中结构体形式类似。
3、结构体方法:
在Go语言中可以为结构体定义一些方法,实现结构体时,也有两种方法,一种带有指针,而另外一种则不带有指针,和本文指针中的讲述类似。例如:
package main
import "fmt"
type user struct {
name string
passwd string
}
func (u user) checkpasswd(passwd string) bool {
return u.passwd == passwd
}
func (u *user) resetpasswd(passwd string) {
u.passwd = passwd
}
func main() {
a := user{
name: "wang",
passwd: "512",
}
a.resetpasswd("1023")
fmt.Println(a.checkpasswd("1023"))
}
上述代码打印结果为true。
4、错误处理
Go语言中使用一个单独的返回值来传递错误信息,在进行函数实现的时候,return两个值,如果出现错误的话,可以return nil和一个error,没有错误的话,返回原本的结果和nil。
5、字符串操作
Go语言的标准库strings包中有常用的字符串工具函数,例如使用Contains()(判断一个字符串是否包含另一个字符串)、Count()(字符串计数)Index()(查找字符串的索引位置)Join()(连接字符串)、Repeat()(重复多个字符串)、Replace()(替换字符串)、ToLower()(字符串所有字母全部转换为小写)、ToUpper()(字符串所有字母全部转换为大写)等。例如:
package main
import (
"fmt"
"strings"
)
func main() {
a := "hello world"
fmt.Println(strings.Contains(a, "ld"))
b := strings.Clone(a)
fmt.Println(b)
fmt.Println(strings.ToUpper(a))
fmt.Println(strings.ToLower(a))
}
输出结果为:
true
hello world
HELLO WORLD
hello world
总结
本文接上一篇文章,依旧为Go基础语法。