go基础——基本类型

Go 支持的基本类型:

  • bool
  • string
  • 数字类型
    • int8, int16, int32, int64, int
    • uint8, uint16, uint32, uint64, uint
    • float32, float64
    • complex64, complex128
    • byte
    • rune
      int: 在32位系统中,4个字节,在64位系统中, 8个字节
      byte 是 uint8 的别名。
      rune 是 int32 的别名。
  • byte 等同于uint8,常用来处理ascii字符,一个byte可以表示一个0-255之间的十进制数,两个十六进制数,一个十六进制需要4位表示
  • rune 等同于int32, 常用来处理unicode或utf-8字符,通常使用utf8.RuneCountInString(“中国”)来统计中文字符串长度等;
  • uintptr: 存储指针的uint
  • array: go中,长度是数组定义的一部分,例如:array := [3]string{}定义了一个长度为3的字符串数组变量,数组是不可变类型,长度一经定义不可动态扩容
  • slice:
    var s []string // 声明一个空切片,可直接使用append()方法进行添加元素
    s := make([]string, 0)
    s := make([]string, 5, 5)// 不可取
    s := []string{"a", "b"}
  • map:
    var m map[string]int //声明一个map变量,注意:声明后不可直接使用,如果要使用注意make初始化
    m := make(map[string]int, 0)
    m := map[string]int{
        "a":1,
        "b":2,
    }
  • channel:
    var chan1 chan int //申明了一个没有缓存的双向管道「双向:可写入 可读取」,同样使用时需要进行初始化,nil通道阻塞
    chan1 := make(chan int, 2) //初始化了一个容量为2的信道,chan1是这个信道的引用
    chan1 := make(chan<- int, 2) //初始化了一个容量为2的只可写入的单项信道
使用close()关闭chan
规则:
 1 向一个已经关闭的chan发送数据,引发panic;
 2 从已经关闭的chan接收数据,返回已缓冲的数据或是零值
 3 无论收发数据,nil通道都会阻塞
  • struct:
    type People struct {
        Sex int
    }
    type Student struct {
        People
        Name string
    }
    s := Student{
        Name: "a",
        People: People{
            Sex: 1,
        },
    }
    fmt.Println(s.Sex)
  • function:
在golang中,function是头等公民,零值nil
    var f func()
    var f func(param string)
    var f func(param string) error
    var f func(param string) func() error
  • interface:
func main() {
    var i interface{}
}

type Man interface {
    Eat(food string) error
    Sleep(time time.Duration) error
}

你可能感兴趣的:(go基础——基本类型)