[ 后端与 Go | 青训营笔记]

82 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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基础语法。