Go语言基础 --- 变量

前言

本章旨在介绍变量的定义、初始化、使用方面的知识,在IDE里面跟着敲会获益匪浅,纸上得来终觉浅!

变量声明

var name type
var 是声明变量的关键字,name 是变量名,type 是变量的类型。

声明方式

 1. 正常命名:var name string
 2. 批量命名:var (
			a string
			b int
			c bool
			d float32
			e func() bool
			d struct {
				x int
			}
       )
 3. 简短格式:a,b := 1,"str"

变量初始化

1. 正常: var sex int = 1 
2. 省略类型: var sex = 1
3. 简短:sex := 1 //注意不能重复赋值,相当于java中的final关键字
4. 多重赋值:var a int = 10
   var b int = 20
   a,b = b,a // 结果为 a=20,b=10
5. 匿名变量,使用下划线”_“标识
   a, _ = 10, 20 // 注意匿名变量不能再次使用

作用域

1. 全局变量(函数外)
   // 声明全局变量
   var a int
   func main(){
   		fmt.Println(a)
   }
2. 局部变量(函数内)
   func main() {
		// 局部变量
		var a int = 10
		var b int = 20
		c := a + b
		fmt.Printf("a=%d, b=%d, c=%d", a, b, c)
   }
3. 形式参数(函数中)
   // a 和 b 即为形式参数
   func add(a int, b int) int {
   		return a + b
   }

变量类型

整形
有符号整数int无符号整数uint
int8uint8
int16uint16
int32uint32
int64uint64

byte和int8是等价的,强调其是一个原始数据,而不是做整数使用

int8 的取值范围 − 2 ( n − 1 ) -2^{(n-1)} 2(n1) 2 ( n − 1 ) − 1 2^{(n-1)}-1 2(n1)1,n=8,以此类推

浮点型
float32float64
复数
complex64complex128
声明方法:
var name complex64 = complex(1, 2)
布尔

bool 默认false

常量
const a = 1
const b string = "1"

const (
	a = "1"
	b = true
)
无类型常量
// 圆周率π
const Pi64 float64 = math.Pi
var pi32 float32 = float32(Pi64)

类型转换

var a int = 1
b := float64(a) // 转换
fmt.Println(b)

类型别名和类型定义

1. 类型别名:
type 类型别名 = int\uint\byte
类型别名和“=”后面的类型是一致,起别名的目的是为了代码更好维护
2. 类型定义:
type NewInt int 
NewInt是int的新类型,NewInt本身具备int类型的特性
3. 非本地类型不能定义方法
本地类型是指非外部引用,如果引用,不能用在方法的回调当中,例如下面这段代码
package main
import (
    "time"
)
// 定义time.Duration的别名为MyDuration
type MyDuration = time.Duration
// 为MyDuration添加一个函数
func (m MyDuration) EasySet(a string) {
}
func main() {
}
报错内容:
**gotest/govartest.go:9:7: cannot define new methods on non-local type time.Duration**
4. 在结构体嵌入时使用别名
type Brand struct{
}

type NikeBrand = Brand

type Viehcle struct{
	Brand
	NikeBrand // 类型实际还是Brand,只是字段名为NikeBrand
}

关键字

go语言是25个

序号Name释义
1.var变量定义
2.break循环中断
3.return函数返回
4.func方法定义
5.continue跳过本次循环
6.for开启循环
7.package包声明
8.if条件判断
9.else分支判断
10.const常量声明
11.import引入包
12.switch多条件判断
13.case条件分支
14.struct定义结构体
15.interface接口:定义规范
16.select用于通道操作
17.go启动一个协程
18.goto无条件转移到程序的任何其他位置
19.defer相当于java的finally,与panic、recover一同使用
20.map创建键值对的集合
21.chan用于声明一个通道
22.fallthrough用在Switch,case 条件中,在行尾有fallthrough不会判断case条件
23.range用于遍历数组、slice、map、通道
24.default在Switch case中匹配默认条件
25.type定义新的类型,给类型起别名
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值