1 导包可以加入别名
import std “fmt” 之后程序可以调用 std. 代替fmt。这样会防止包名重复。
2 数据类型 byte(等同于uint8) rune(等于int32)
3“strconv”包下 int=》string;string=》int;
//int=》string
strconv.Itoa(a)
//string=》int
strconv.Atoi(b)
4常量用 const 声明。 大写
5运算符:&^
/*
6: 0110
11:1011
-------
&^ 0100 (如果下面的位数是1则需要强行改成0,否则不对第一个书进行操作)
*/
6 循环:标签和goto结合使用,标签放在goto语句后面避免死循环。
7. 数组:
a := [20]int[19:1] //(即将索引为19的赋值为1)
数组可以进行比较 ==或者!= 需要类型和长度相同才能进行比较。
8.冒泡排序
// BubbleSort project 冒泡排序
package main
import (
"fmt"
)
func main() {
//数组定义是大括号,
a := [5]int{5, 2, 6, 3, 9}
fmt.Println(a)
lenth := len(a)
for i := 0; i < lenth; i++ {
for j := i + 1; j < lenth; j++ {
if a[i] < a[j] {
temp := a[i]
a[i] = a[j]
a[j] = temp
}
}
}
fmt.Println(a)
}
9. Slice切片:copy(s1,s2)以长度短的为准。append追加切片,长度超过,重新分配内存地址。切片取数组中的一部分如果长度不超过,修改其中一个数组,取出来的数值也会变。
10. map嵌套map时需要每一层map都要初始化。
for i,v:=rang slice{} //i 是索引或者key
11 函数function
func A() (int,int,int){ //第二个小括号内是返回类型
}
func B(B ... int){ //不定长变参必须是最后一个参数。
}
- 如果传递的是slice类型的在函数内部修改slice的,外部的slice 也被修改了。如果传入的是int,string 等这种值传递不影响外部。如果传递指针类型的话,就改变原始值。
闭包的作用是:返回一个匿名函数
- defer 后定义的先调用,逆序向上调用
- 没有异常机制,有Panic/recover模式来处理错误。
- Panic可以在任何地方引发,但是recover只有在defer调用的函数中有效;Panic运行之后之后就不运行了。defer func(){ recover}放在Panic之前。
package main
import (
"fmt"
)
func main() {
A()
B()
C()
}
func A() {
fmt.Println("func a")
}
func B() {
defer func() {
if err := recover(); err != nil {
fmt.Println("recover in b")
}
}()
panic("func b")
}
func C() {
fmt.Println("func c")
}
匿名结构
a := &struct { //取地址
Name string
Age int
}{
Name: "hif",
Age: 10,
}
匿名字段
type nimingstring struct {
string
int
}
//初始化的时候必需对应I
s := nimingstring{"sad", 1}
组合结构(结构的嵌入)
type human struct {
Sex int
}
type teacher struct {
human
Name string
Age int
}
type student struct {
human
Name string
Age int
}
//初始化
t := teacher{Name: "as", Age: 2, human: human{Sex: 1}}
st := student{Name: "aasasasas", Age: 22, human: human{Sex: 0}}
t.Sex = 1
可能遇到的问题
- 导包 尽量写绝对路径
- slice特性是指向地址。但是写方法对slice进行处理,为了避免指向地址变了,写上返回值。
- time包。自定义时间类型,Format(常量或者api内部类型(全复制))。禁止修改,会影响结果。
- for range和闭包的坑:不作为参数传递的都是引用地址的传递。需要作为参数传递(进行值拷贝传递)。
在线网站:
疑问? 闭包的概念