go语法基础 | 青训营笔记

71 阅读2分钟

这是我参与第五届青训营办学笔记创作活动的第1天。

我学习了go语言的语法基础,对于一个有c++基础的学生,学起go来还是比较轻松的,但是由于进度较快还算是不太熟练,还需要巩固一下,多尝试写go语言代码。

go语言的优点:1.高性能,高并发 2.语法简单 3.丰富的标准库 4.完善的工具链 5.静态链接 6.快速编译 7.可以跨平台 8.垃圾回收

go的安装与环境配置

1.首先下载go语言,进入网址(go语言下载) 2.配置go语言安装环境,我下载的是vscode(vscode下载地址) 3.可以配置环境变量(GOPROXY.IO - 一个全球代理 为 Go 模块而生) 4.安装好vscode后需要安装go插件 5.创建项目后可以打开终端输入go mod init www.github.com/用户名/项目名称 以此创建go模块。

初识helloworld

package main
import "fmt"
func main(){
    fmt.Println("hello world!")
}

变量与常量的初始化

变量

var a = "hello world"
var b, c int = 1, 2
var d = false
var e float64
f := float32(e)
g := a + "hello" //字符串可以直接相加

常量 需要添加const关键字

const s string = "helloworld"
const t = 100

if-else语句,switch语句,for循环语句(go中没有while循环语句)

if-else语句

这里if-else语句,和c++不同的是:写完if后的条件判断无需加括号,以及后面必须接大括号而不像c++可以写在一行内。

package main
import "fmt"
func main(){
    if 7%2==0 {
        fmt.Println("7是偶数")
    }
    else {
        fmt.Println("7是奇数")
    }
}

switch语句

switch语句,go与c++的区别在于每写完一种情况后无需加break,它会自动停止。

package main
import "fmt"
func main(){
    a:=3
    switch a {
        case 1:
            fmt.Println("1")
        case 2:
            fmt.Println("2")
        case 3, 4:
            fmt.Println("3 or 4")
        default:
            fmt.Println("other)
    }
}

for循环语句:

for循环语句和if-else语句一样不需要加小括号。支持break和continue语句。

for j:=1; j<=10; j++ {
    fmt.Println(j)
}

数组与切片

数组的定义

//一维数组
var a [5]int
//二维数组
var b [2][3]int

切片

用make([]类型,长度)创建,可以用append()进行添加

s := make([]string, 3)
s[0]='a'
s[1]='b'
s[2]='c'
s = append(s,'d')
s = append(s,'e', 'f')

c = make([]string,len(s))
copy(c,s)

fmt.Println(s[2:5]) //左闭右开
fmt.Println(s[:5]) //表示从0开始
fmt.Println(s[2:]) //表示从下标2的开始到结束

map用法

m := make(map[string]int)
m["one"] = 1
m["two"] = 2

r, ok = m["unknown"] //r=0,ok=false 表示map中没有unknown

函数

函数声明和参数中的数据类型都是放在后面的

func add(a int,b int) int{
    return a + b
}
func add2(a, b int) int{
    return a + b
}

结构体

结构体定义及结构体方法

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
}

这里只记了一些基础的语法知识,也是我青训营第一天的学习内容。