《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类型的内存空间,返回地址

Tags: ,

Categories:

Updated:

Leave a Comment