【golog】我的go学与思3

变量

正文

package main

import "fmt"

var c, python, java bool

func main() {
	var i int
	fmt.Println(i, c, python, java)
}

终于看到变量声明了,需要var关键字,和func的机理一致。但是可能这种实现在语法分析的时候BNF里面变量和函数的推到式没有交集,更好看点。

var c, python,
 java bool

这种也是编译过的,估计是匹配了vartype,中间全部是这个类型。

初始化

var i, j int = 1, 2

我没想到这个=会在后面。

隐式声明

go 的隐式声明变量只能是临时变量,如下:

package main

import "fmt"

func main() {
	var i, j int = 1, 2
	k := 3
	c, python, java := true, false, "no!"

	fmt.Println(i, j, k, c, python, java)
}

// 运行结果:
$ 1 2 3 true false no!

我很好奇为啥这么设计,这个隐式声明是右值推导左值类型。但是这个时候会给这个k分配啥呢?

  • 是根据大小自动分配
  • 还是默认int32+动态分配大小

基础类型

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // alias for uint8

rune // alias for int32
     // represents a Unicode code point

float32 float64

complex64 complex128

第一次见到有复数作为基础类型的😀

初值

go是默认初值为0值,0值不是0。是:

  • 0
  • false
  • 空串
  • 等等

这是真的方便,c++默认是没有初始化的,我开始学习的时候不知道多少次栽在这个初始化上。

但是c++还不能全部初始化,因为头文件里面的会出现multi define的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值