初习go语言| 青训营笔记

126 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记。笔者于此之前未曾接触过go语言。此笔记是笔者在听完第一堂课之后的一些感想和对go语言编程基础部分的一些总结。

  • 1. go语言是什么 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
  • 2. go语言的优势 go语言具有高性能、高并发,语言简单、学习曲线平滑,标准库丰富,工具链完善,编译速度快,支持跨平台,有垃圾回收功能等多重优势。
  • 3.go语言的使用环境
  1. [安装golang](go.dev/)
  2. IDE:vscode,goland等
  • 4.基础语法 1.helloworld
package main

import (
	"fmt"
)

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

第一行package main是代表程序是main包的一部分,main包也就是程序的入口包。 第三行导入了标准库里的fmt包,主要用于向屏幕输出内容。 go语言主要通过“fmt.Println”来输出内容。 (注:go语言行命令结束后不需要使用“;”来结束)

2.变量

go语言有三种定义变量的方式,分别如下

var a = "initial"
var b, c int = 1, 2
f := float32(e)

3.判断与循环

go语言中的ifelse和for后面不需要“()”,且“{”必须写在if或者for的同一行。 对于switch而言,不同于c++,go语言不需要break,且case后可接任意变量类型

if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

for n := 0; n < 5; n++ {
		if n%2 == 0 {
			continue
		}
		fmt.Println(n)
	}
        
        t := time.Now()
	switch {
	case t.Hour() < 12:
		fmt.Println("It's before noon")
	default:
		fmt.Println("It's after noon")
	}

5.数组与切片

数组长度固定所以很少使用。切片可以任意更改长度,使用make创造切片,可以像数组一样取值,使用append来追加元素。

s := make([]string, 3)  //使用make创建切片
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	fmt.Println("get:", s[2])   
	fmt.Println("len:", len(s)) //利用len函数计算s切片的长度

	s = append(s, "d") //使用append追加元素

	c := make([]string, len(s))
	copy(c, s) //利用将s的切片复制给c切片
	fmt.Println(c) // [a b c d e f]

	fmt.Println(s[2:5]) // 类似python的切片操作,取出2~4号元素
	fmt.Println(s[:5])  // [a b c d e]
	fmt.Println(s[2:])  // [c d e f]

	good := []string{"g", "o", "o", "d"}
	fmt.Println(good) // [g o o d]

6.map

别名哈希,集合。是最常用的数据结构之一,由键值对(key和value)组成。

m := make(map[string]int) //通过make创建一个空map
	m["one"] = 1 //通过[]对map键值对进行赋值
	m["two"] = 2
	fmt.Println(m)           // map[one:1 two:2]
	fmt.Println(len(m))      // 2
	fmt.Println(m["one"])    // 1
	fmt.Println(m["unknow"]) // 0

	r, ok := m["unknow"] //查看m中是否存在“unknow”的键,如果存在,r赋值为对应的值,否则为0;如果存在,ok赋值为true,否则为false
	fmt.Println(r, ok) // 0 false

	delete(m, "one") //删除键值对

7.range

range可以用来遍历数组和map,对于数组而言会返回索引和对应位置的值共2个值。如果不需要索引则可以用下划线来忽略。

  • 5.总结

go语言是一门和c/c++语言十分相像的语言,但相比与C++,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片型、并发、管道、垃圾回收、接口等特性的语言级支持。

  • 参考资料:

baike.baidu.com/item/go/953…

bytedance.feishu.cn/file/boxcnQ…

github.com/wangkechun/…