[走进GO语言|青训营笔记]

43 阅读2分钟

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

1.输出"Hello World!"

package main 

import "fmt" 

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

首先定义包名,声明该程序属于main包,再使用“import”导入fmt库,调用fmt包下的Println函数进行打印。

2.声明变量

package main

import (
	"fmt"
	"math"
)

func main() {

	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) // initial 1 2 true 0 0
	fmt.Println(g)                // initialapple

	const s string = "constant"
	const h = 500000000
	const i = 3e20 / h
	fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}

第一种,指定变量类型,如果没有初始化,则变量默认为零值第二种,根据值自行判定变量类型。 第三种,使用 := 赋值操作符 另:用const定义常量

3.slice

Go中的slice依赖于数组,它的底层就是数组,所以数组具有的优点,slice都有。且slice支持可以通过append向slice中追加元素,长度不够时会动态扩展,通过再次slice切片,可以得到得到更小的slice结构,可以迭代、遍历等。

以下代码为slice的详细使用方式:

package main

import "fmt"

func main() {

	s := make([]string, 3)
	s[0] = "a"
	s[1] = "b"
	s[2] = "c"
	fmt.Println("get:", s[2])   // c
	fmt.Println("len:", len(s)) // 3

	s = append(s, "d")
	s = append(s, "e", "f")
	fmt.Println(s) // [a b c d e f]

	c := make([]string, len(s))
	copy(c, s)
	fmt.Println(c) // [a b c d e f]

	fmt.Println(s[2:5]) // [c d e]
	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]
}

代码中首先使用make初始化一个切片,之后将其赋值,并使用append演示slice尾插元素功能,copy是将slice直接复制的函数。

4.map

map 是 key-value 数据结构,又称为字段数组或者关联数组。

package main

import "fmt"

func main() {
	m := make(map[string]int)
	m["one"] = 1
	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"]
	fmt.Println(r, ok) // 0 false

	delete(m, "one")

	m2 := map[string]int{"one": 1, "two": 2}
	var m3 = map[string]int{"one": 1, "two": 2}
	fmt.Println(m2, m3)
}

注意: 1。map 在使用前一定要 make。

2.map 的 key 不能重复,如果重复了,则以最后这个 key-value 为准。

3.map 的 value 是可以相同的。

4.map 的 key-value 是无序。