Go语言学习笔记(一)

注意事项

  1. Go程序的入口是main()函数
  2. 每个句子后面不需要添加分毫,语句是一句句进行编译的
  3. 定义的变量或者import导入的包没用,代码编译就不会通过
  4. 其注释://或者/* */块注释中不允许有注释嵌套
  5. 快捷键 tab键,整体右移;shift+tab整体左移
  6. API:application program interface,应用程序接口,即各个包函数
  7. go build 源码 ---->生成一个二进制可执行文件go run 源码--->直接执行,未编译
  8. 使用变量的方式
    变量 = 变量名 + 值 + 数据类型
    a. var 变量名 类型      
       变量名  =  值
    b. var 变量名 = 值  //这里省略数据类型,系统会自动判定数据类型
    c. 省略var   如; name := "tom"   等价于 var name string
                                           name = "tom"
    
  9. 一次声明多个变量,如: n1, name, n3 := 100, “tom”, 88(自动赋类型)
  10. 定义全局变量
var(
   n3 = 300
   n4 = 20
   name = "may"
)
  1. 数据类型 尽量使用占用空间小的数据类型(保小不保大原则)
  2. 如何在程序中查看变量的占用字节大小和数据类型 unsafe.Sizeof(变量名)
  3. bit: 计算机中的最小存储单位 byte: 计算机中基本存储单元
  4. 浮点型默认声明float64
  5. Mac : shift + option + 向下箭头 复制当前行,并在下一行显示
  6. go中没有设置单个字符类型,存储单个字符,一般用byte。字符串是一串固定长度的字符,连接起来的字符序列,但go中的字符串是由字节组成的
  7. 格式化输出https://blog.csdn.net/qq_22660775/article/details/89487263
  8. UTF-8编码 字符本身是整数;英文字母 1个字节;汉字 3个字节
  9. 字符串存储:字符->对应码值->二进制->存储
    字符串读取:二进制->码值->字符->读取
  10. 字符串一旦被赋值后,字符串就不能修改了
  11. 字符串的两种表示形式
a. " "双引号:会识别转义字符
b. ` `反引号:以字符串原生形式输出,包括换行和特殊字符 `内容`
  1. 数据类型的转换var 变量名 T = T (V) 将V转换成T类型的数据,这里需要注意⚠️,高低精度之间不能相互转化。在精度进行转换时,数据本身并未发生数据类型变化,而是将存储的数据(即值)发生变化,而V自己本身的数据类型没变化
  2. 和Java不同的是:go中的数据类型是可以将大小精度数据来回转换,但是Java中只能将低精度传给高精度
  3. 指针变量中存放的是地址
  4. 值类型:基本数据类型,变量存的就是值。获取变量的地址,用&
    指针类型:指针变量存的是一个地址,这个地址指向的空间存的才是值。获取指针类型所指向的值,用*
    var ptr *int = &num 将num的地址存放在ptr指针中,则这个指针指向的地址就是num的地址,这个地址中存放的值是num的值
  5. 指针的使用细节:
  6. 下划线 "_"空标识符,可以代表其他的标识符,但它对应的值会被忽略 不可以作为标识符使用
  7. %的使用 :a%b = a - a / b * b
  8. i++和i--只能作为独立的语句使用,不存在--i、++i
  9. 涉及到二进制
c << = 2  左移  c = c << 2
c >> = 2  右移  c = c >> 2
c &= 2   按位与 c = c&2
c ^= 2   按位异或 c = c ^ 2
c |= 2    按位或     c = c | 2
^  : 异或符号     左移n位,是乘 2^n      右移n位,是除2^n
  1. 交换,但不使用中间变量
a = a + b 
b = a - b
a = a - b
  1. go 不支持三目运算, go没有while 和do…while
  2. 输入语句fmt.Scanlnfmt.Scanln两者之间的区别:前者只能一个一个的输入, 而后者可以识别一串输入
  3. 负数反码是在原码的基础上,除符号位后各位取反;负数补码在反码的基础上加1。计算机运算时,都是以补码的形式来运算的,最后需要将结果转换为原来的原码
  4. Golang中的两个移位运算符
右移运算符   >> :低位溢出,符号位不变,并用符号位补溢出的高位
左移运算符   << :符号位不变,低位补0
  1. Golang支持在if中,直接定义一个变量,如:
if age := 20; age > 18 {}.  //这里没有加括号 for也不加括号

同时也需要注意与java的区别:

if n >= 9{
   ...
}else if n > 6 && n < 9{//这里的n<9不能省略!!!
   ...
}else{...}
  1. switch分支控制 匹配项后不需要再加break; switch 穿透 fallthrough 在case语句块后增加fallthrough后,则会继续增加执行下一个case(默认不加的情况下,找到相应的case代码块后执行完即结束)
    Type switch: interface()
  2. for 的使用:
a. for int i = 1; i < 10; i++ { ... }
b. for 循环判断条件 { ... }
c. for   { ... } 无限循环,需要配合break语句使用
  1. 字符串的遍历方式: 配合切片使用
只含有字符的: for — range
			 for index,val := range str{ ... }
(含中文)的字符串: var str string = "hello,北京"
				  str2 = []rune(str);//就是将str 转为切片 []rune
  1. break语句出现在多层嵌套的语句块中,可以通过标签指向要终止的那一层语句块
  2. 跳转控制语句: goto 一般不推荐使用
  3. 函数的基本语句:
func 函数名 (形参列表)(返回值列表){
   ...
   return 返回值列表
}
如: func Cal(n1 float64, n2 byte) float64 { ... }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值