【Go学习笔记】2 - Go 基础

【Go学习笔记】2 - Go 基础

定义 变量,常量,Go内置类型,以及一些小技巧。

定义变量

Go语言使用 var 这个关键字定义变量。Go 把变量类型放到了 变量名后面。

# 定义VariableName 类型为 type 的变量
var variableName type

# 定义多个变量,用 逗号 分割。 定义三个类型都是type的变量
var vname1, vname2, vname3 type

# 定义变量并赋值
var variableName type = value

# 定义多个变量并赋值
var vname1, vname2 type = v1, v2

# 定义多变量,可以 忽略 类型声明。
var vname1, vname2 = v1, v2

还可以再简化,使用一个新的的符号 :=

vname1, vname2 := v1, v2

:= 这个符号 取代了vartype 这种形式叫 简短声明。它有个限制,只能在函数内部使用。所以,定义全局变量的时候,使用 var

_ (下划线) 是个特殊的变量名。 任何赋予它的值都会被丢弃。

_, b := 34, 35
结果:b=35 
说明:将35赋予b,同时丢弃了 34

如果声明了变量,但是未使用的话,会在编译阶段报错。

常量

常量可以是 数值, 布尔值 或是字符串。

# 语法: const constanName = value
const Pi = 3.1415
const i = 1000
const MaxThread = 10
const prefix = "astaxie_"

内置基础类型

布尔型

布尔值的类型为 bool 值是 true 或是 false 默认值:false

# 示例
var isActive bool   // 全局变量声明
var enabled, disabled = true, false   // 忽略类型的声明
func test(){
    var available bool  // 一般声明
    valid := false    // 简短声明
    available = true   // 赋值操作
}

数值类型

整数类型包括: 无符号和带符号两种。Go同时支持 int 和 uint 这两种类型的长度相同。
Go也有直接定义号的位数类型:rune int8 int16 int32 int64 和byte unit8, uint16, uint32,uint64。rune是ini32的别称。bype 是uint8的别称。
这些类型的变量之间不允许相互赋值,或是操作。
浮点数的类型有: float32 和 float64 默认是float64
复数:默认的类型是 complex128 (64实+64虚) 也有complex64 复数的形式:RE+IMi RE是实,IM是虚数,最后的 i 是虚数单位。

var c complex64 = 5+5i
fmt.Printf("value = %v",c) 
# 结果:5+5i

字符串

Go支持 UTF-8 字符串用一对引号 (“ ” )或是反引号 他的类型是 string

var frenchHello string 
var emptyString string = ""
func test(){
    no, yes, maybe := "no", "yes""maybe" // 简短声明,并赋值
    JapaneseHello = "Konichiwa" 
    frenchHello = "Bonjour" // 常规赋值
}

在Go中,字符串是不可变的。如下会报错

var s string = "hello"
s[0] = 'c'

修改字符串

## 方法1
s := "hello"
c := []byte(s) // 将字符串 s 转换为 byte 类型
c[0] = 'c'
s2 := string(c)  // 再转换为 string 类型
fmt.Printf("%s\n", s2)   // 输出结果: cello

## 方法2
s := "hello"
s = "c" + s[1:]  // 字符串不能修改,但是可以做切片。s[1:] 取第二个开始以后的。
fmt.Printf("%s\n",s) //输出结果:cello

可以用 + 操作 连接2个字符串

s := "hello"
a := "  world"
c := s + a
fmt.Printf("%s\n",c) // 结果:hello  world

声明多行字符串

# 使用 ` ` 反引号
m := `hello
        world`
` 括起来的字符串是 Raw 字符串,即 字符串才代码中的形式就是打印时的形式,它没有转义,换行也是原样输出。

错误类型

Go 关键字 error 专门处理错误类型。Go的package中,有个 errors的包处理错误。

err := errors.New("emit macho dwarf: elf header corrupted")
if err != nil{
    fmt.Print(err)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值