1. go语言注意事项

  1. 全局变量声明但不赋值的时候必须要声明其类型, 因为编译器没有可以推断其类型的依据
var a // 错误
var a string  // 正确
var a = "abc" // 正确
var a string = "abc" // 正确
  1. 局部变量的声明可以使用 := 简写, 并且编译器会根据值的类型自动推断其类型, 但是不能进行二次声明. 更重要的是声明的局部变量不能不使用
func test(){
  a := 1
  return
  // 错误, 因为 a 并没有被使用
}
  1. 常亮的声明,对应的值必须是在编译期间就能够得到的. 即不能将常量设置为一个函数的输出(內建函数除外). 但可以是一个数学表达式, 因为数学表达式编译期间可以计算
// 示例1:
func main() {
    const a = t() //错误, 编译期间并不能得到常亮的值
}
func t() int {
    return 1
}

// 示例2:
func main() {
    const a = 2 + 3
    print(a)
}
// 正确
  1. 变量的相等比较: go语言中必须是相同类型的值才可以进行比较. 如果一个变量对应的值是一个接口interface, 那么另外一个变量也必须是实现了相同接口的interface
  2. 数字类型的长度问题
int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
uintptr 的长度被设定为足够存放一个指针即可。
Go 语言中没有 float 类型。(Go语言中只有 float32 和 float64)没有double类型
各种类型的大小
整数:

int8(-128 -> 127)
int16(-32768 -> 32767)
int32(-2,147,483,648 -> 2,147,483,647)
int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)

无符号整数:

uint8(0 -> 255)
uint16(0 -> 65,535)
uint32(0 -> 4,294,967,295)
uint64(0 -> 18,446,744,073,709,551,615)

浮点型(IEEE-754 标准):

float32(+- 1e-45 -> +- 3.4 * 1e38)
float64(+- 5 * 1e-324 -> 107 * 1e308)

int 型是计算最快的一种类型。

整型的零值为 0,浮点型的零值为 0.0。

float32 精确到小数点后 7 位,float64 精确到小数点后 15 位。由于精确度的缘故,你在使用 == 或者 != 来比较浮点数时应当非常小心。
你最好在正式使用前测试对于精确度要求较高的运算。

你应该尽可能地使用 float64,因为 math 包中所有有关数学运算的函数都会要求接收这个类型。

你可以通过增加前缀 0 来表示 8 进制数(如:077),增加前缀 0x 来表示 16 进制数(如:0xFF),
以及使用 e 来表示 10 的连乘(如: 1e3 = 1000,或者 6.022e23 = 6.022 x 1e23)。

局部变量你可以使用 a := uint64(0) 来同时完成类型转换和赋值操作,这样 a 的类型就是 uint64。

Go 中不允许不同类型之间的混合使用,但是对于常量的类型限制非常少,因此允许常量之间的混合使用,
下面这个程序很好地解释了这个现象(该程序无法通过编译):
package main

func main() {
    var a int
    var b int32
    a = 15
    b = a + a    // 编译错误, 因为b是int32类型, a是int类型
    b = b + 5    // 因为 5 是常量,可以被隐式转换为int32所以可以通过编译,
}
可以通过显示转换来解决不同类型的计算问题
package main

func main() {
    var a int
    var b int32
    a = 15
    b = int32(a + a)
    print(b) // 30
}

6.算术运算问题

/ 对于整数运算而言,结果依旧为整数,例如:9 / 4 -> 2。
取余运算符只能作用于整数:9 % 4 -> 1。
浮点数除以 0.0 会返回一个无穷尽的结果,使用 +Inf 表示。

7.字符串问题

go 语言使用 utf-8 编码
字符串分为两类
解释型字符串 和 非解释型字符串
解释型:
  使用双引号 "" 包括, 这里字符串在输出的时候会转义特殊字符(\n  \t \r  \u \\ 等 ), 比如 \n 输出的时候会换行而不是展示 \n
非解释型:
  使用反引号 `` 包括, 特殊字符在输出的时候不会进行转义, 即 \n 会原样输出

可以通过 len() 方法来获取字符串的长度(注意这个长度不是有多少个汉字, 这里的长度输出的是字节长度)
使用 ==  !=   <  <=  > >=  在内存中按字节比较来实现字符串的对比

go字符串也支持标准索引,但需要注意的是这是纯字节操作:
  如果是ASCII码字符串, 使用[]索引没有问题, 但如果是utf-8字符串得到的并不一定是你想要的结果
  字符串 str 的第 1 个字节:str[0]
  第 i 个字节:str[i - 1]
  最后 1 个字节:str[len(str)-1]
  还有 获取字符串中某个字节的地址的行为是非法的,例如:&str[i]

字符串的拼接使用+号完成

字符串format的各种 % 号含义
%v  打印结构体
%+v  打印结构体 带上结构体的字段名
%T  打印类型
%t  打印布尔
%d  打印整数
%b  打印二进制
%x  打印16进制
%f  打印浮点数
%e  打印科学计数法
%s  打印字符串
%q  打印双引号字符串, 即在填充字符串的时候,会自动的在填充字符串的位置两边添加双引号
%p  打印指针
%6d  打印字符宽度, 当数字不够长度时会在前面补充空格补充. %6s 一样的含义
%.4f  打印浮点数的精度, 当超过4位小数位时, 会进行四舍五入, 小于4位时后面会补充0
%-6s 左对齐, 在右侧补充长度
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270