Go语言入门基础 | 青训营

97 阅读4分钟

一些参考网站:

https://goproxy.cn/
https://go.dev/
https://studygolang.com/

配置IDE

  • 1.安装GoLand IDE和SDK
  • 2.配置环境变量
    • (1)配置GoLand IDE环境变量
    • (2)配置GoROOT环境变量
    • (3)配置Path环境变量
    • (4)配置GOPath环境变量
    • (5)在GOPATH下新建三个文件夹
    • (6)在GoLand ide中配置

)`(G}TI}JC8K%_KENZI1L$E.png

图1.1 运行第一个golang程序

语法基础

2.1 输出“hello world”

package main
import (
	"fmt"
)
func main() {
	fmt.Println("Hello, World!")
}

2.2 变量

package main
import (
	"fmt"
  "math"
)
func main() {
  const pi float64 = 3.1415
  var a = "initial"
  var b,c int = 1,2
  var d = true
  var e float64 
  f := float32(e)
  g := a + "foo"
	fmt.Println(a,b,c,d,e,f)
  fmt.Println(g)
  fmt.Println(math.Sin(math.Pi))
}
  1. var 声明定义一个变量,定义后,值可修改
  2. const 声明定义一个常量,定义后不可再修改
  3. := 定义一个变量,类型由后面的值决定。常用的定义方式

2.3

if语句中()可以省略,而{}是不能省略的。

仅有for一种循环体结构,如果for不给条件则表示死循环。break和continue同c、c++

switch分支结构:

a := 2
switch a{
    case 1:
        fmt.Println(1)
    case 2:
        ……
    case 4,5:
        ……
    default:
        ……
}

数组:长度是固定的 切片(更为常见的结构)使用上类似Python的list

Out:[a b c d e]

在Go语言中,单引号用于表示rune类型的值,双引号用于表示字符串类型的值。当我们使用单引号将一个rune类型的字符直接传递给append()函数时,Go语言会将其视为一个rune类型的值,而不是一个字符串类型的值。因此,Go语言会报错,提示我们不能将rune类型的值作为字符串值传递给append()函数。

如果我们将单引号换为双引号,将字符'd'包裹在双引号中,Go语言就会将其视为一个字符串类型的值,而不是一个rune类型的值。因此,我们可以将其作为字符串值传递给append()函数,而不会导致错误。

s := make([]string,3)
s[0] = 'a' //这里需要注意的是,不能使用char类型,而是string类型
s[1] = "b"
s[2] = "c"
s = append(s,"d","e")

函数名规范

Go语言约定,函数名首字母大写,表示该函数是可以被其他模块的函数调用;函数名首字母小写,表示该函数只在模块内使用。不知道同学们有没有观察到,当我们向控制台打印输出时,使用的是fmt.PrintLn(),可以看到大写的P,同时需要使用import "fmt",正好说明了该函数的使用需要导入外部模块。

错误处理

提到错误处理,学过Java的朋友们可能立刻会想到Error、Exception等词汇,之前在学校学习Java的时候,面对庞大的异常处理体系,总是令人摸不着头脑。

而在Go中,错误处理却显得异常的简单。当我们在编写执行一些特定功能的函数时,出现异常是很正常的事情,如果函数无法正确执行下去,那么应该及时地向调用它的老大报告这个错误,而老大也应该想法设法地捕获这些异常,而Go语言则巧妙地利用了函数可以返回多个值来实现这一个机制。

我们编写一个打招呼的函数来进一步说明。该函数接受一个姓名,返回定制的问候语。

go
复制代码
func greeting(name string) string {
    GreetToYou := fmt.Sprintf("你好,%v", name)
    return GreetToYou
}
抛出异常

很容易想到,该函数希望接受一个姓名作为参数,如果name为空字符串""时,应该抛出一个错误,只需要添加一个类型为Error的返回值就可以。

go
复制代码
func greeting(name string) (string, error) {
    if name == "" {
        return name, errors.New("姓名为空")
    }

    GreetToYou := fmt.Sprintf("你好,%v", name)
    return GreetToYou, nil
}

errors.New()需要导入errors包。

对于该函数,有这几点可以好好说道说道。

  • 添加了一个新的返回值类型error,用于返回函数的执行状态

  • name函数参数进行判断,若输入无效,函数对应的返回值类型stringerror分别返回""空字符串和errors.New(),其中包含自定义的错误信息。

  • 若函数正常执行,stringerror分别返回对应的结果字符串和nil类型。在Go语言中,nil表示指针、通道、切片、接口等类型的零值,在错误处理中,nil就表示程序没有错误。