Golang 基础 01 -- 类型,变量与常量

目录:

@
注意事项

  • 省略调用和别名不能同时使用
  • go关键字25个,都是小写
  • 常量,变量,类型,接口,结构,首字母大写就是public,首字母小写是private,一个包是一个整体
  • 常量,变量,一般类型(非struct,interface)都可以组合成组
  • var只能声明全局变量,也可以在函数体里面用,但是不建议这样用
  • type:自定义类型,可以用来更改类型的名字

数据类型

  1. bool: 1 byte, only have value of "true" and "false"
  2. int/uint: 32bits/64bits depend on the platform
  3. (八位整型)int8/uint8(byte): 1 byte, -128127/0255
  4. (16位整型)int16/uint16: 2byte, -215~215-1/0~2^16-1
  5. (32位整型) int32(rune)/uint32: 4byte, -231~231-1/0~2^32-1 rune是字符型
  6. (64位整型) int64/uint64: 8byte, -263~263-1/0~2^64-1
  7. (浮点型,没有double)float32/float64: 4/8byte , account to 7、15 deciaml palces(精确到小数点后7/15位)
  8. (复数)complex64/complex128
  9. 含指针的32位或者64位 int:uintptr

类型零值

即默认值,通常为0,bool为false,string为空字符串

单个变量的声明和赋值

//声明:
var num int
//赋值
num=40
//声明的同时赋值,类型可以省略,也可以把var省略,用:=
var num int = 40
var num2 = 41
num3 := 43

多个变量的声明赋值

  • 全局变量的声明可以使用var()和并行方式简写,但是,var不能省略,即不能用:=
  • 类型推断即省略类型名,所有情况都可以
  • 函数体内的局部变量不能使用var()的方式简写,但是能用:=和并行简写
//全局变量:
var (
	aaa="hello"
	ddd, hhh=1,2
)
//函数体内的局部变量声明同时赋值才能使用:=,不能使用var()形成组
var f,g,h,j int
f,g,h,j=1,2,3,4

var a,b,c,d int = 1,2,3,4
var a,b,c,d = 1,2,3,4
a,b,c,d := 1,2,3,4
a, _, c,d := 1,2,3,4 //a=1,c=3,d=4

变量的类型转换

  • Go不存在隐式转换,所有类型转换必须显示声明
  • 转换只能发生在两种相互兼容的类型之间
var a float32 = 1.1
b := int(a)

c := 65
d := string(c)
fmt.Println(d)
//输出A
//string()表示将数据转换成文本格式,将65 对应于A,在unicode编码中,要是想输出字符65 ,就要引入包strconv
e := strconv.Itoa(c)
fmt.Println(e)

常量的定义

  • 常量一般全部大写字母,特殊情况可以只首字母大写,此时为public,如果想定义为private,就在最前面加下划线或者小写c(表示const)表示private
  • 常量的值在编译的时候就已经确定
  • 常量的定义格式和变量基本相同
  • 等号右边必须是常量或者表达式
  • 常量表达式中的函数必须是内置函数
const B = 'A'
const (
	text = "123"
	length = len(text)
	num = B * 20
)
  • 常量初始化规则:在定义常量组const()时,如果不给初始值,则默认使用上一行的表达式
  • 使用相同的表达式不代表具有相同的值
  • iota是常量的计数器,初始我0,一个组中每定义一个常量,计数器加一
  • 通过初始化规则和iota可以达到枚举的效果
  • 没遇到一个const关键字,iota就会重置为0
原文地址:https://www.cnblogs.com/leafs99/p/golang_basic_01.html