首先感谢无闻老师的指导 https://github.com/unknwon

上节课作业:声明多个常亮与变量

//常量的定义
const (
    PI = 3.14
    const1 = "1"
)
//全局变量的定义
var (
    name1 = 3.14
    name2 = "1"
)
//一般类型声明
type (
    newType int
    type1   float32
    type2   string
    type3    byte
)

Go基本类型

- 布尔型:bool

  • --长度:1字节
  • --取值范围:true,false
  • --注意事项:不可以用数字代表true和false

- 整型:init/uint

  • -- 根据运行平台可能为32或者64位

- 8位整型:int8/unint8

  • -- 长度:1字节
  • --取值范围:-128~127/0~255,2的8次方=256

- 字节型:byte(uint8别名)

- 16位整型:int16/uint16

  • --长度:2字节

  • --取值范围:-32768~32767/0~65535

- 32位整型:int32/uint32

  • --长度:4字节

  • --取值范围:-2^32/2~2^32/2-1 / 0~2^32-1

- 64位整型:int64/uint64

  • --长度:8字节

  • --取值范围:-2^64/2~2^64/2-1 / 0~2^64-1

 - 浮点型:float32/float64

  • --长度:4/8字节
  • --小数位:精确到7/15小数位

- 复数:complex64/complex128

  • --长度:8/16字节
  • --足够保存指针的32位或者64位整数型:uintptr

- 其他值类型:

  • --arrary、struct、string

- 引用类型

  • --slice、map、chan

- 接口类型:interface

- 函数类型:func 

 类型零值

零值并不等于空值,声明变量的默认值,通常值类型默认为0,bool为false,string为空字符串。

var a [2]int
fmt.Println(a)
#[0,0]

var a [2]bool
fmt.Println(a)
#[false,false]

var a [2]byte
fmt.Println(a)
#[0,0]

fmt.Println(math.MinInt8)

类型别名

#声明类型别名
type(
    byte int8
    rune int32
    文本 string
)
func main(){
    var b 文本//声明变量b
    b = "中文类型名"
    fmt.Println(b)
}
#打印:中文类型名

单个变量声明与赋值

  • --变量的声明格式:var <变量名称> <变量类型>
  • --变量的赋值格式:<变量名称> = <表达式>
  • --声明又赋值:var <变量名称> [变量类型] = <表达式>
var a int
a = 123

#声明且赋值
var b int = 321
#上行的格式可省略变量类型,由系统推断
var c = 321
#声明赋值最简写法
d := 456

多个变量声明与赋值

  • --全局变量声明可使用var()方式简写
  • --全局变量声明不可以省略var,但可以并行方式
  • --所有变量都可以使用类型推断
  • --局部变量不可以使用var()方式简写,只能使用并行方式
var (
    //常规
    aaa = "hello"
    //并行方式以及类型推断
    sss, bbb = 1, 2
    // :号本省就是省略var关键字,所以在var里不能再使用:号。不可以省略var
    // ccc :=3 
)

//多个变量声明
var a,b,c int
a,b,c = 1, 2, 3

//多个变量声明与赋值
var a,b,c int = 1,2,3
//省略变量类型,由系统推断
var a,b,c = 1, 2, 3

//_占位符,可以忽略后面的值,常应用在函数多个返回值。
a, _, c := 1, 2, 3
fmt.Println(a, c)

 变量的类型转换

  • --Go不存在隐式转换,所有类型转换必须显示声明
  • --转换只能发生在两种互相兼容的类型之间
  • --类型转换的格式:  <ValueA> [:]= <TypeOfValueA>(<ValueB>)
var a float32 = 1.1
fmt.Println(a)
b := int(a)
fmt.Println(b)

//不能将数字型转bool,类型不兼容
b:=bool(a)

课堂作业

思考运行结果

func main() {
	var a int = 65
	b := string(a)
	fmt.Println(b)
}

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐