二、变量、类型、类型之间的转换

1.变量

 1 package main
 2 
 3 import "fmt"
 4 
 5 //注意是()而不是{}
 6 var (
 7     x int
 8     b bool
 9 )
10 
11 func main() {
12     x = 123
13     b = true
14     fmt.Println(x, b)
15     //变量名是下划线时,任何赋给它的值都被丢弃
16     a, _ := 34, 35
17     fmt.Println(a)
18 }

输出结果如下:

123 true


34

注意:变量声明了但未使用编译会报错。

2.类型

布尔类型

bool:true或false

数字类型

支持intuint

rune, int8, int16, int32, int64byte, uint8, uint16, uint32, uint64。其中runeint32的别称,byteuint8的别称。

注意:这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。

常量

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     const (
 7         x = iota // x == 0
 8         y = iota // y == 1
 9         z = iota // z == 2
10         w        // 常量声明省略值时,默认和之前一个值的字面相同。这里隐式地说w = iota,
            //因此w == 3。其实上面y和z可同样不用"= iota"
11 ) 12 fmt.Println(x, y, z, w) 13 const v = iota // 每遇到一个const关键字,iota就会重置,此时v == 0 14 fmt.Println(x, y, z, w, v) 15 }

结果:

0 1 2 3


0 1 2 3 0

字符串

字符串是用一对双引号("")或反引号(``)1的左边

在Go中字符串是不可变的

var s string = "hello"

s[0] ='c'

修改第一个字符为'c'时会报错

但如果真的想要修改怎么办呢?下面的代码可以实现:

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     s := "hello"
 7     c := []byte(s) // 将字符串 s 转换为 []byte 类型
 8     c[0] = 'c'
 9     s2 := string(c) // 再转换回 string 类型
10     fmt.Printf("%s\n", s2)
11 }

結果如下:

cello

還有另一种方法

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     //连接2个字符
 7     s := "hello,"
 8     m := " world"
 9     a := s + m
10     fmt.Printf("%s\n", a)
11     //修改字符串也可写为
12     s1 := "hello"
13     s1 = "cs" + s1[1:] // 字符串虽不能更改,但可进行切片操作
14     fmt.Printf("%s\n", s1)
15     s1 = "world" + s1[:0] // 全部替換
16     fmt.Printf("%s\n", s1)
17 }

结果:

hello, world


csello


world

复数

Go还支持复数。它的默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。复数的形式为RE + IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。下面是一个使用复数的例子:

var c complex64 = 5+5i

output: (5+5i) 包括括号

fmt.Printf("Value is: %v", c)

错误

Go内置有一个error类型,专门用来处理错误信息,Go的package里面还专门有一个包errors来处理错误:

 1 package main
 2 
 3 import (
 4     "errors"
 5     "fmt"
 6 )
 7 
 8 func main() {
 9     err := errors.New("emit macho dwarf: elf header corrupted")
10     if err != nil {
11         fmt.Print(err)
12     }
13 }

結果:emit macho dwarf: elf header corrupted

var a error 定义了a为一个error,a的值是nil

3.类型之间的转换

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     mystring := "hello this is string"
 7     //UTF-8编码
 8     byteslice := []byte(mystring)
 9     fmt.Println(byteslice)
10     //Unicode编码
11     runeslice := []rune(mystring)
12     fmt.Println(runeslice)
13     b := []byte{'h', 'e', 'l', 'l', 'o'}
14     s := string(b)
15     i := []rune{65, 66, 67}
16     r := string(i)
17     fmt.Println(s)
18     fmt.Println(r)
19 }

結果:

[104 101 108 108 111 32 116 104 105 115 32 105 115 32 115 116 114 105 110 103]


[104 101 108 108 111 32 116 104 105 115 32 105 115 32 115 116 114 105 110 103]


hello


ABC

 1 package main
 2 
 3 import "fmt"
 4 
 5 type foo struct{ int }
 6 type bar foo
 7 
 8 func main() {
 9     var b bar = bar{1}
10     var f foo = foo(b) //不能直接f foo = b,因为不能使用类型bar作为foo赋值
11     fmt.Println(b, f)
12 }

結果:

{1} {1}

转载于:https://www.cnblogs.com/liubiaoren/archive/2013/01/30/2882690.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值