go语法

作者: 不思量q | 来源:发表于2020-03-14 21:38 被阅读0次
  1. 基本类型

    • bool

      优先级:&& > || * > +

      布尔型不可强制转为整型,也不可以转为其他类型

    • string

    • int int8 int16 int32 int64

      Int8(-128 - 127). uint8(0 - 255)

      通常 int 类型的处理速度也是最快的

      0x%x十六进制,%d十进制,

    • uint8 16 32 64 uintptr

      uintptr无符号整数类型,没有指定具体的 bit 大小但是足以容纳指针,uintptr 类型只有在底层编程时才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方

      程序逻辑对整型范围没有特殊要求,但是在二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用 int 和 uint

    • byte // uint8的别名

    • rune //int32的别名 代表一个unicode码

  • float32 float64

    fmt.Printf("%f\n", math.Pi). fmt.Printf("%.2f", math.Pi)

    • complex64(32位实数和虚数) complex128

      complex128 为复数的默认类型,name := complex(x, y) x为实部,y为虚部

      real(z)获取实部 imag(z) 获取虚部

  1. 申明 标准格式 批量格式 简短格式

    :=声明时左值变量必须是没有定义的变量

    var conn net.Conn
    var err error
    conn, err = net.Dial("tcp", "127.0.0.1:8080")
    // 在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名重复声明的,编译器也不会报错
    conn, err = net.Dial("tcp", "127.0.0.1:8080")
    conn2, err = net.Dial("tcp", "127.0.0.1:8080")
    
  2. 匿名变量

    不占用内存空间,也不会分配内存,匿名变量与匿名变量之间也不会因为多次声明而无法使用。

    func getData() (int, int) {
      return 1, 2
    }
    func main() {
      a, _ := getData()
      _, b := getData()
      fmt.Println(a, b) // 1,2
    }
    
  3. 变量的作用域

    • 局部变量

      局部变量名和全局变量名可以相同,局部变量名优先级更高

    • 全局变量

      全局变量声明必须以var关键字开头,如果想要在外部包中使用全局变量的首字母必须大写

    • 形式参数

      只在函数调用时生效,调用结束时销毁,未被调用时,行参不占用实际的存储单元,也没有实际值

  4. go语言指针

    go具有控制数据结构指针的能力,但是却不能进行指针运算。

    指针在golang中可以分为两个核心概念:

    • 类型指针:可以对这个指针类型的数据进行数据,也可以使用指针传递数据,而无需拷贝数据,但不能进行偏移和运算。
    • 切片,由指向起始元素的原始指针、元素数量和容量组成

    对比C语言的指针,指针是其保持高性能的根本所在,在操作大数据块时方便快捷,故此是操作系统使用的是C及其指针特性编写。

    使用new()关键字也可以创建指针,创建过程会分配内存,被创建的指针指向默认值。

  5. go语言变量的生命周期

    堆:存放进程执行中被动态分配的内存段,大小不固定

    栈:也即堆栈,用来存放程序暂时创建的局部变量,如函数大括号内的变量。

  6. go常量

    const (
      a = .12 
      b = 123   ) // 声明多个常量
    

    iota常量生成器

    type weekday int
    const (
     sunday weekday = iota
      monday // 1
    )
    

    无类型常量

    var x float32 = math.Pi
    // math.Pi 无类型的浮点数常量,可以直接用于任意需要浮点数或复数的地方
    
  7. 类型别名

    // 类型别名和类型定义
    type IntAlias = int // 给int取IntAlias的别名
    type newInt int // 声明newInt为int类型
    

    非本地类型不能定义方法

    在结构体成员嵌入时使用别名

相关文章

  • beego 模版语法

    beego 模板语法指南 本文讲述 beego 中使用的模板语法,与 go 模板语法基本相同。 基本语法 go 统...

  • (四)go语言函数&参数传递

    go语言函数 基本语法 例子 go语言参数传递

  • Protocol buffer

    语法介绍 protoc --go_out=. --go-grpc_out=. api.proto--go_out ...

  • go语法

    基本类型bool优先级:&& > || * > +布尔型不可强制转为整型,也不可以转为其他类型string...

  • Go语法

    1 基本语法 Go程序由多个标记组成:关键字,标识符,常量,字符串,符号如:fmt.Println("Hello,...

  • Go语法

    Go语言的这些地方都做的还不错:拥有自动垃圾回收、一个包系统、函数作为一等公民、词法作用域、系统调用接口、只读的U...

  • Go's Declaration Syntax(Go的声明语法)

    以下翻译自Rob Pike 编写的Go's Declaration Syntax(Go的声明语法) 介绍 Go的新...

  • go 基础学习

    1 go 基础go 语法基础go 官方资料如果由C ,C++ 基础, 学习go 比较容易,本文学习go ,主要是为...

  • Golang的语法糖

    Golang的语法糖 ... Go语言函数中有三个点 ... 表示为可变参数,这是Go的糖衣语法,表示可以接受任...

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

网友评论

    本文标题:go语法

    本文链接:https://www.haomeiwen.com/subject/nmroshtx.html