码迷,mamicode.com
首页 > 其他好文 > 详细

golang 小问题

时间:2017-09-25 13:28:11      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:pack   cti   操作   声明   func   nbsp   const   param   ring   

1.

package main

import (
    "fmt"
    "reflect"
)

const (
    cmask  = 127
)

func main() {
    var u uint8
    u = 22
    r1 := u + cmask
    fmt.Println(r1)
    fmt.Println(reflect.TypeOf(cmask)) // int
    //------------------
    mask := 0x7f
    //r2 := u + mask
    //fmt.Println(r2)
    fmt.Println(reflect.TypeOf(mask)) // int
}

cmask 和 mask 反射出来的类型都是 int。为什么 cmask 可以和u进行操作,而 mask 不行 ???

换人话来说就是:使用没指定类型的 const,就相当于直接使用它对应的常量。

所以你写 u + cmask 就相当于写了 u + 127,于是不会保存。而 mask 是个普通变量,没有这种特殊待遇,类型是在声明时就固定了(int),因此会因为 int 和 uint8 不兼容而报错。

 

4.package的名称:

如果几个.go在同一个文件夹中,则pachage的名称最后一至,否则容易出现错误.

 

5.如果包下载不下来,则在github上把这个包down下来,修改名称后放入到vendor中.

golang 小问题

标签:pack   cti   操作   声明   func   nbsp   const   param   ring   

原文地址:http://www.cnblogs.com/jay--zhang/p/6744015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!