【golang】wait,who am I

qingkechina · · 1201 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

345

唉,这是int类型吗?

看着是~

它有可能是345.0,可以简写为345.(没有看错,只是把0给简没有了


func main() {

s := 345

var t int32 = 345

fmt.Println(s == t)

}

会出现什么呢?

对了,会出现s == t (mismatched types int and int32),因为s := 345被golang编译器缺省赋予了int类型。



func main() {

s := 345

var t float = 345

fmt.Println(s == t)

}

会出现什么呢?

想都别想了,因为golang的浮点只有float32和float64,哈哈哈哈哈哈~



func main() {

s := 345.0

var t float32 = 345

fmt.Println(s == t)

}

这次呢,会出现什么呢?

会出现s == t (mismatched types float64 and float32),golang编译器缺省认为345.0是float64类型的


是不是有点无聊?

只是突然间想起来,就随手写一下吧,反正也没有什么系列化 :)



再来一个字符串,看看who am I?

大家都经常这样定义字符串:var t string = "wait, who am I?"

但是有读其它源码的,比如beego中,有出现类似这样定义的:var s string = `wait, who am I?`

唉,这好像有点区别,一个是双引号",一个是Tab键上面的`号

func main() {

var s string = `wait, who am I?`

var t string = "wait, who am I?"

fmt.Println(s == t)

}

运行一下,竟然能打印出true,如果双引号是字符串定义,那么`就会说:”who am I ?“


`wait, who am I?`: 原生字符串

"wait, who am I?":解释型字符串

这有什么区别?好像蛮高级的。



追加一个\"看看

func main() {

var s string = `wait, who am I\"?`

var t string = "wait, who am I\"?"

fmt.Println(s)

fmt.Println(t)

fmt.Println(s == t)

}

执行结果:

wait, who am I\"?

wait, who am I"?

false

看到差异了吧,原生字符串定义是什么样它就是什么样,不会转义。



把\"转成\' 试试

func main() {

var s string = `wait, who am I\'?`

var t string = "wait, who am I\'?"

fmt.Println(s)

fmt.Println(t)

fmt.Println(s == t)

}

会发现抛unknown escape sequence: ',说明人家解释型字符串根本不与\'一块玩。



上面两个示例估计就能理解什么是原生字符串什么 是解释型字符串了。

再看一下字符串的内存地址问题:

func main() {

var s string = "wait, who am I ?"

var t string = "wait, who am I ?"

fmt.Println("s address is :", &s)

fmt.Println("t address is :", &t)

}

跑起来呀,跑起来:

s address is : 0xc0420381d0

t address is : 0xc0420381e0

发现这两个字符串的内存地址都不一样,用C的coder说这本来就不一样呀,用Java的coder笑了



本来还想写一下什么是slice的,闺女叫出去玩了,下次再写 :)




本文出自 “青客” 博客,请务必保留此出处http://qingkechina.blog.51cto.com/5552198/1895827


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:qingkechina

查看原文:【golang】wait,who am I

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1201 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传