GoLang入门D2

今天学的是变量类型、声明、赋值等
值的类型

  1. int/uint类型长度取决于本机架构,要么32要么64
    当然可以直接声明int8 int16 int32 int64,uint8 uint16 uint32 uint64,byte
    byte是uint8的别称,本质是一样的
  2. 没有float类型,没有double类型,只有float64和float32
  3. 无论是什么架构,int32长度就是32不会变,int64等也同理
  4. 每一种类型都是独立的,不可混用,比如int8不可以和int32一起运算

声明变量
不允许声明不使用的变量,比如下面是错误案例,并且导入的库也没有用

package main

import (
	"fmt"
)

func main() {
	var int a
}

变量的默认值

package main

import (
	"fmt"
)

func main() {
	//变量的默认值
	var a int
	//a int 直接输出是错误的
	//定义int,默认是0,string 默认是""
	fmt.Println(a) 
	//0
	var a float64
	fmt.Println(a)
	//0
}

变量的赋值
八进制,十六进制,科学记数法是支持的,比如077,0xFF,6.022e23

package main

import (
	"fmt"
)

func main() {
	//变量的赋值
	//1.声明与赋值分开
	var b int
	b = 15
	fmt.Println(b)
	//2.声明并赋值
	//这个形式只能用在函数内
	c := true 
	fmt.Println(c)
	//声明并赋值的第二个形式
	var d int32
	d = 18
	fmt.Println(d)
}

甚至不说明类型都是可以的

package main

import (
	"fmt"
)

func main() {
	var a = 16
	fmt.Println(a)
	//但以下操作是错的
	//var a 
    //a = 16
    //fmt.Println(a)
    //这个也是错的
    //a = 16
    //fmt.Println(a)
}

平行赋值

package main

import (
	"fmt"
)

func main() {
	//多个变量平行赋值
	a, b := false, 20
	fmt.Println(a, b)
	//false 20
	
	//特殊变量名_
	//赋给_的所有值都会被丢弃
	//同时注意,_是不可以被输出的
	_, c := false, true
	fmt.Println(c)
	//true
}

声明成组

package main

import (
	"fmt"
)

func main() {
	//变量的赋值
	//var声明成组,同样的import,const也可以
	var (
		e int
		f bool
	)
	fmt.Println(e, f)
	//0 false
}

常量

package main

import (
	"fmt"
)

func main() {
	const (
		a = 15
		b = 16
	)
	fmt.Println(a, b)
	//15 16
}

利用iota生成枚举值

package main

import (
	"fmt"
)

func main() {
	const (
		a = iota
		b = iota
	)
	fmt.Println(a, b)
	//0 1
}

后面的iota可以省略

package main

import (
	"fmt"
)

func main() {
	const (
		a = iota
		b         //Implicitly b=iota
	)
	fmt.Println(a, b)
	//0 1
}

string
string是不可变的,不像C那样,不可以赋值完一个串直接通过改变某个位置的字符改变这个串
多行串

s:="hello"
	+"world"

会被解析成

s:="hello";
	+"world";

这显然不对,但是改下+的位置就可以了

s:="hello"+
	"world"

还有一个办法是用反引号`
这下连加号都不用了

package main

import (
	"fmt"
)

func main() {
	s1 := `hello
world`
	fmt.Println(s1)
	s2 := `hello
    world`
	fmt.Println(s2)
	s3 := "hello" +
		"world"
	fmt.Println(s3)
}

这个输出还是挺有意思的

hello
world
hello
    world
helloworld

rune
rune是int32的别名,这个在遍历字符串的字符时会用到
复数
Go原生支持复数,变量类型是complex128(虚数部分64位)

package main

import (
	"fmt"
)

func main() {
	var reim complex128 = 5 + 5i
	fmt.Printf("%v", reim)
	//%v表示以默认格式打印
	//(5+5i)
}

错误
error是一种接口,值为nil

package main

import (
	"fmt"
)

func main() {
	var e error
	fmt.Println(e)
	//<nil>
}

一个小尝试:既然只导入了fmt库,那么我不用fmt.Println()直接用Println()也没有二义性吧,但是这样的尝试是失败的,报错是导入了fmt又没有使用,是的,之前也有讨论过,Go是不允许导入不使用的库的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值