UDN-企业互联网技术人气社区

板块导航

浏览  : 2824
回复  : 0

[面试技巧] Golang 的面试语法糖

[复制链接]
巡山霉少女的头像 楼主
发表于 2016-4-11 19:26:45 | 显示全部楼层 |阅读模式
  基础数据类型的推导

  1.   // 下面这段代码的输出结果为:Result: 32 是否正确?
  2. package main
  3. import "fmt"

  4. var a int32

  5. func main() {
  6.     b := 32
  7.     a = b

  8.     fmt.Printf("Result: %d\n", a)
  9. }
复制代码

  Result: 编译时错误 // cannot use b (type int) as type int32 in assignment

  Integer类型间的比较

  
  1. // 下面这段代码的输出结果为:Result: true 是否正确?
  2. package main
  3. import "fmt"

  4. var a int32 = 1
  5. var b int64 = 1

  6. func main() {
  7.     fmt.Printf("Result: %v\n",a == b)
  8. }
复制代码

  Result: 编译时错误 // invalid operation: a == b (mismatched types int32 and int64)

  Float类型的推导

  
  1. // 下面这段代码的输出结果为:Result: 1.000000 是否正确?
  2. package main
  3. import "fmt"

  4. var a float32

  5. func main() {
  6.     b := 1.0
  7.     a = b
  8.     fmt.Printf("Result: %f\n", a)
  9. }
复制代码


  Result: 编译时错误 // cannot use b (type float64) as type float32 in assignment

  bool 的类型转换

  1.  // 下面这段代码的输出结果为: true 是否正确?
  2. package main
  3. import "fmt"

  4. var flag bool

  5. func main() {
  6.     flag = bool(1)

  7.     fmt.Printf("Result: %v\n", flag)
  8. }
复制代码


  Result: 编译时错误 // cannot convert 1 (type int) to type bool

  浮点数比较

  1.   // 下面这个段代码的输出为:true 是否正确?
  2. package main
  3. import "fmt"

  4. var i = 0.1
  5. var j = 0.2

  6. func main(){
  7.     fmt.Println(i + j == 0.3)
  8. }
复制代码


  字符串切割

  1.   // 下面这个段代码的输出为:My name is: X,Y,客 是否正确?
  2. package main
  3. import "fmt"

  4. func main() {
  5.     name := "XY客"
  6.     fmt.Printf("My name is: %c, %c, %c\n", name[0], name[1], name[2])
  7. }
复制代码


  Result: My name is: X, Y, å // 这是因为在UTF-8编码规定一个汉字占3个字节,而因为字母、数字、标点占一个字节

  切片的长度与容量

  1.   //下面的这段代码的输出为:5,5 与 2, 2 是否正确?
  2. package main
  3. import "fmt"

  4. func main() {
  5.     s := [5]int{0, 1, 2, 3}
  6.     t := s[2:4]
  7.     fmt.Println(len(s), cap(s))
  8.     fmt.Println(len(t), cap(t))
  9. }
复制代码


  Result: 5,5 与 2,3 // slice := array[i:j] 切片的长度为:j-i,容量为cap(array) - i

  赋值表达式(一)

  1.  // 如下代码的结果输出为?
  2. package main
  3. import "fmt"

  4. func main(){
  5.     var x = 0
  6.     x, x = 1, 2
  7.     fmt.Println(x)
  8. }
复制代码


  Result: 2 // x 会先赋值1,再赋值2

  赋值表达式(二)

  1.   // 如下代码的结果输出为?
  2. package main
  3. import "fmt"

  4. func main(){
  5.     var x = 0
  6.     var a = [3]int{}
  7.     x, a[x] = 1, 2
  8.     fmt.Println(a[1])
  9. }
复制代码


  Result: 0 // a[x]先进行求值为:a[0],x 在进行赋值为1, a[0]赋值为2,此时a[1]仍为默认值

原文作者:谢烟客 来源:开发者头条
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部