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