go语言的快速上手| 豆包MarsCode AI 刷题

46 阅读2分钟

package main//main包是程序的入口包 import ( "fmt"//fmt包,用来输入输出字符串 ) fmt.println这行代码调用了fmt包中的Println函数,用于打印字符串"hello world"到控制台。 fmt包,用来输入输出字符串 字符串是内置类型,能够直接用‘+’拼接,用‘=’去比较。 变量的声明 1.var a (int)=~ ~ 2.a:=(int)() 常量就是把var改为const常量可以通过上下文自动确定类型 if后面条件没有() 只有一个for循环 switch如果没有break会默认跑完所有case switch case中case里写条件可以代替if else 数组长度固定,不常用,更多用切片 切片 用make创建一个切片 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]

} 扩容相当于创建一个新的slice,需要再次赋值回去 map就是哈希 也是用make创建 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"]//ok用来获取map里到底有没有这个key存在
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)

map是无序的,随机输出 range,对于slice和map可以用range快速遍历 会返回两个值,第一个是索引,第二个是值,不需要索引用下划线替代 指针用来对传入的参数进行修改

func add2ptr(n *int) { *n += 2 }

func main() { n := 5 add2(n) fmt.Println(n) // 5 add2ptr(&n) fmt.Println(n) // 结构体
结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称 一旦定义了结构体类型,它就能用于变量的声明 错误处理,在函数处理时,在函数类型+error表明可能返回错误 要访问结构体成员,需要使用点号 . 操作符" 结构体.成员名" 可以像其他数据类型一样将结构体类型作为参数传递给函数。并以以上实例的方式访问 可以定义指向结构体的指针类似于其他指针变量,格式如下:

var struct_pointer *Books

以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前:

struct_pointer = &Book1

使用结构体指针访问结构体成员,使用 "." 操作符:

struct_pointer.title