go基础、菜鸟教程学习

1.安装和入门

安装、配置以及测试:https://cloud.tencent.com/developer/article/1623121
go的两种运行方式:

go build hello.go # 编译得到二进制文件hello
go run hello.go   # 编译得到二进制,并直接运行二进制文件
./hello           # 运行二进制文件hello

2.go语言官方文档学习

2.1 Get started with Go

mkdir test
cd test
go mod init example.com/hello   # 生成go.mod文件,module名为example.com/hello
vim hello.go

go.mod文件是用于管理程序依赖的包。

hello.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
go run .
输出:
Hello, World!

下面修改hello.go,让它使用外部包:

package main

import "fmt"

import "rsc.io/quote"

func main() {
    fmt.Println(quote.Go())
}

"rsc.io/quote"用于输出谚语

go mod tidy # 会自动下载依赖需要的依赖。依赖默认下载到$HOME/go/pkg/mod。

go run .

查找外部包的网站:https://pkg.go.dev/

菜鸟教程学习

Map

Map

  • Map 是一种无序的键值对的集合。
  • 在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 ""。
  • Map 是引用类型

var siteMap map[string]string /*创建集合 */
siteMap = make(map[string]string)

m := map[string]int{
    "apple": 1,
    "banana": 2,
    "orange": 3,
}

v2, ok := m["pear"]  // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值


// 获取 Map 的长度
len := len(m)


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

切片("动态数组")

和python中numpy的切片操作一样。

var slice1 []int= make([]int, len)
也可以简写为
slice1 := make([]int, len)

s :=[] int {1,2,3} 

s := arr[startIndex:endIndex] // 切片和python中一样

// 空(nil)切片:一个切片在未初始化之前默认为 nil,长度为 0
if(numbers == nil){
  fmt.Printf("切片是空的")
}

// 如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来
numbers = append(numbers, 1)
copy(numbers1,numbers) // 拷贝 numbers 的内容到 numbers1 

接口

其他

go get下载的内容在哪里:比如github.com上下载的内容放到了/Users/dxm/go/pkg/mod/github.com

posted @ 2022-11-15 22:49  好人~  阅读(139)  评论(0编辑  收藏  举报