GO 语言学习专篇

1. GO 环境安装


2. GO基础知识学习

语言数据类型

  • 布尔型: bool

    • 布尔型的值只可以是常量 true 或者 false
    • 在格式化输出时,可以使用 %t 来表示你要输出的值为布尔型。
    • 对于布尔值, 好的命名能够很好地提升代码的可读性,例如以 is 开头的isFinished。

    var b bool = true

  • 数字类型:

    • 数字类型的默认值是 0
    • int 型是计算最快的一种类型
    • Go是强类型语言,不会进行隐式转换。所以Go 中不允许不同类型之间的混合使用,但允许常量之间的混合使用。
    • 尽可能地使用 float64,因为 math 包中所有有关数学运算的函数都会要求接收这个类型。
    • 有符号整数
      • int8(-128 -> 127)
      • int16(-32768 -> 32767)
      • int32(-2,147,483,648 -> 2,147,483,647)
      • int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
      • int( 32 位操作系统上64 位,64 位操作系统64 位)
    • 无符号整数
      • uint8(0 -> 255)
      • uint16(0 -> 65,535)
      • uint32(0 -> 4,294,967,295)
      • uint64(0 -> 18,446,744,073,709,551,615)
      • uint ( 32 位操作系统上64 位,64 位操作系统64 位)
    • 浮点数
      • float32(+- 1e-45 -> +- 3.4 * 1e38)
      • float64(+- 5 1e-324 -> 107 1e308)
    • 复数
      • complex64 (32 位实数和虚数)
      • complex128 (64 位实数和虚数)
    var a uint8 = 255 // 255
    var b int = 255 // 255
    var c int // 0
    var d float64 //0
    复制代码
  • 字符串类型: string

  • byte类型

  • rune类型

变量

  • 变量通过变量名访问
  • 变量名由字母、数字、下划线组成,其中数字不可以在守卫
  • 声明变量使用 var, 可以一次性声明多个变量
  • 声明变量的格式: var identifier type, 可以只声明,不初始化.
  • 声明未初始化的时候不可以漏写类型, 否则会报错
  • 单引号是字符, 会输出对应的 unicode编码, 双引号是字符串

有效声明变量名如下

image.png

变量未初始化的初始值:

// 基本数据类型
package main
import "fmt"

func main() {
  var i int
  var f float64
  var b bool
  var s string
  fmt.Printf("%v %v %v %q\n", i, f, b, s) // 0 0 false ""
}
复制代码

image.png

// 其他数据
package main

import "fmt"

func main() {
  var a *int // 报错: cannot use a (type *int) as type string in argument to fmt.Printf. Go build failed.
  var b []int // []
  var c map[string] int  // map[]
  var d chan int  // <nil>
  var e func(string) int // <nil>
  var f error //  <nil>       error 是接口
  fmt.Printf(a, b, c, d, e, f)
}

复制代码

常量

常量是不会被修改值的标识符, 常量的数据类型只可以是布尔型、数字型和字符串型。

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过

iota,特殊常量,可以认为是一个可以被编译器修改的常量, 它默认开始值是0,const中每增加一行加1,同行值相同, iota中断必须显性恢复

// 定义如下:
const b string = "abc"
const b = "abc" // 编译器可以推断类型
const a, b, c = 1, false, "str" // 多值多类型定义

// 常量枚举
const (
    Unknown = 0
    Female = 1
    Male = 2
)

// 函数计算式
a = "abc"
b = len(a)
// import "unsafe"
c = unsafe.Sizeof(a)

// iota
const (
    a = iota
    b
    c
) // a = 0, b = 1, c= 2

const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)  // 0 1 2 ha ha 100 100 7 8

// iota实例
const (
    i=1<<iota
    j=3<<iota
    k
    l
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}
//i= 1, j= 6 ,k= 12, l= 24
/**
    i左移0位, j左移1位, k左移2位, l左移4位
    
    <<n==*(2^n)
**/
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享