《Go Web编程》-类型和控制
go语言和C很像,像到是有指针甚至到了有函数指针和goto的地步。符号首字母的大小写决定了符号的可见性(比Fortran有进步😇),for和c相比有变强,为什么多行字符串是`multiLinestring`呢。。。
定义变量和常量
var 变量 类型 [= 值]
 var isABug bool (默认false)
 var Name, addr type
 var name, Addr type = "bblu", "china"
 Name, addr := "bblu", "china"
 Valuef32 := float32(3.14)
 primes := [4]int{0, 1, 2, 3}
 Arrays := [...]int{1,4,6,9,12,45}
 arra10 := [10]int{0,1,2}   //部分初始化
 var silce0 = Arrays[2:5]   //[前开后闭)
 var slice1,slice2 []byte
 var dict map[string] int
 dict := make(map[string] int)
 dict["one"] = 1
 rating := map[rune]string{0:"red",1:"green"}
 _, b : = 0, 1
 c := a + b 
 
 type Person struct{
     name string
     addr string
     age int
 }
 type Programmer struct{
     Person     //匿名字段可以继承或者组合
     language string
 }
 bar p1 person{"bb", "cn", "35"}
const 常量 = 值
const PI = 3.14159265358979323846264338
const Prefix = "cn_bj"
const greeting = \`multi   
                line string!\`
内置类型
- 布尔:bool[false, true]
- 整形 [int8, int16, rune=int32, int64]
- 无符 [byte=uint8, uint16, uint32, uint64]
- 浮点 [float32, float64]
- 复数 [complex64, complex128]
- 字符 [string]
- 错误 [error]
- 数组 [array, slice]
- 字典 [map]需要make初始化
- 组合 [struct]
- 函数 [func, method]
- 接口 [interface]
操作技巧
字符串转可编辑的数组
c := []byte("hello")
分组声明
"大写开头的符号可以导出,小写符号是私有的"
    import{
        "fmt"
        "os"
    }
    const{
        Pi = 3.14
        Db = "pg"
    }
    var{
        i int
        f float32
        s string
    }
iota枚举默认从0开始
"同一组常量声明省略类型则和前面一致"
cosnt{
    r = iota    // r = 0
    g = iota    // g = 1
    b = iota    // b = 2
    a           // a = 3
}
for
for i < 10{
    i += 1
}
for i:=0; i < sum; i++{
    amount += arr[i]
}
for k,v := range dict{
    fmt.Println("dict[", k, "]=", v)
}
func 返回值的声明可以省略
func add(input1 int32,input2 int32) int{
    return input1 + input2
}
func subAdd(a int32,b int32) (sub int, add int){
    return a-b, a+b
}
func getIndicesByTarget(nums []int, leng int, tar int)(i0 int,i1 int){
	for i:=0; i< leng-1; i++{
	}
	return -1, -1
}
defer栈 延迟执行一般用了确保资源被释放
Panic & Recover
先不管这些用不到的东西
main & init
main 入口函数(这点上C编译时候是可以-nostartfiles [-nostdlib]然后-e指定自定义的入口函数)
make 和 new
- make T 给内建类型分配内存,返回一个有初始值的T类型
- new(T) 分配了零值填充的T类型的内存空间,返回地址

Leave a Comment