后端与go|青训营笔记

144 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
emm今天是第二天发现要学的东西真多,力扣都没时间做了,>-<

1.函数的写法

func 函数名(传入参数列表)返回值{
    函数体
    }

其中go函数可以返回多个值,与c,c++语言不同的一点是和声名类型变量相似返回类型也是将返回类型写到后面,若在返回值列表中写出定义的变量名则只用 return 即可完成函数返回值,例如:

package main
import "fmt"
func add(a,b int)(c int){
	c=a+b
	return 
}
func main(){
	fmt.Println(add(1,2))
}

2.指针的写法

函数传参为值传递和引用传递,其中引用传递多应用指针

例如:

func f(n *int){
    *n++
}

func main(){
    n:=5
    f(&n)
    fmt.Println(n)
}

3.结构体

类似于c,c++语言中的结构体相似

type user struct{
   变量  变量类型
   }

4.结构体方法

type user struct {
     name string
     password string
  }
  
 func (u user) checkPassword(password string)bool{
     return u.password==password
     }
 func (u *user) resetPassword(password string){
    u.password=password
    }

对这个结构的理解就是感觉是个封装的类,在类中写成员变量,结构体外面写函数方法

5.错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

error类型是一个接口类型,这是它的定义:

type error interface {
    Error() string
}

我们可以在编码中通过实现 error 接口类型来生成错误信息。

函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:

func Sqrt(f float64) (float64, error) {
    if f < 0 {
        return 0, errors.New("math: square root of negative number")
    }
    // 实现
}

在下面的例子中,我们在调用Sqrt的时候传递的一个负数,然后就得到了non-nil的error对象,将此对象与nil比较,结果为true,所以fmt.Println(fmt包在处理error时会调用Error方法)被调用,以输出错误,请看下面调用的示例代码:

result, err:= Sqrt(-1)

if err != nil {
   fmt.Println(err)
}