Go学习笔记| 青训营

68 阅读2分钟
  1. .go文件 -go build-> .exe文件 -go run->运行,也可以直接运行go run形成 可执行二进制文件

  2. .exe文件比.go文件多了基本文件,任何电脑都可以go run运行

  3. 定义的变量或者import的包如果没有使用,则不能通过

  4. \r 从当前行重新输出,覆盖掉以前的内容

  5. go语的SDK是什么?软件开发工具包

  6. 基本数据类型

  7. 数值型
    整数类型int , int8 , int16 , int32 , int64 , uint , uint8 , uint16 , uint32 , uint64 , byte
    浮点类型float32(单精度) , float64(双精度)(默认8位,64字节)
    字符型没有专门的字符型,使用byte来保存单个字符
    布尔型bool(一个字节)
    字符串string
  8. int8 , int16 , int32 , int64分别占用1,2,4,8个字节

  9. rune相当于int32;byte相当于uint8

  10. package main
    
    import (
    	"fmt"
    	"unsafe"
    )
    
    func main() {
    	var n1 = 100
    	fmt.Printf("n1的类型:%T", n1) //fmt.Printf()函数,用于格式化输出
    	
    	var n2 int64 = 100	//unsafe.Sizeof(n)是unsafe包的一个函数,返回返回变量n占用的字节数
    	fmt.Printf("n2数据类型:%T,占用字节%d",n2,unsafe.Sizeof(n2))
    }
    
  11. 书写代码时,尽量使用占用空间小的数据类型

  12. package main
    import "fmt"
    
    func main() {
    	var f1 float32 = 12.34
    	fmt.Println(f1)
    
    	var f2 float32 = -0.00089
    	var f3 float64 = -987654321.123		//尾数部分可能丢失,造成精度损失
    	fmt.Println("f2 = ", f2, "\nf3 = ", f3)
        
        var f4 float32 = -123.1234567
    	var f5 float64 = -123.1234567
    	fmt.Println("f4 = ", f4, "\nf5 = ", f5)
    
    	fmt.Println(5.1234e2 == 512.34)  // 1.23e2 == 123.0,两者相等
    	fmt.Println(512.34e-2 == 5.1234) // 123.4e-2 == 1.234,两者相等
    }
    
  13. go中没有字符类型,用char代替字符类型

  14. 字符串通常由字符组成,go的字符串由字节组成

  15. 对于范围在ASCII码表内的字符,使用byte,超出255,使用 int 类型或 uint 类型

  16. 使用字符输出,使用格式化输出

    fmt.Printf("%c",c)
    
  17. byte类型参与数据运算

  18. go中的字符串一旦赋值不可修改

  19. func main() {
    	var address string = "12345 \n 6789"	// "" 双引号识别转义字符
    	fmt.Println(address)
    
    	s2 := `import \n \t \\ \' \" `		// `` 反引号的使用,“~”键,源码输出不改变
    	fmt.Println(s2)
    }
    
  20. 字符串可以使用 + 拼接,+号保留在上一行

  21. 默认值:整型0,浮点型0,字符串"",布尔类型false

  22. 精度转换方式为T(v),T为目标格式,v为被转换的数据,只有v的值受影响,v的数据类型不改变

  23. 直接输入的数据类型与操作系统相同,为 int

  24. func main(){
    	var n1 int32 = 10
    	var n2 int64
    	var n3 int8
    	
    	n2 = n1+20		//计算时,输出结果与已有数据类型相同 n1+20 == int32 + int == int32
    	n3 = n1+128		// 128 数据范围超过结果,编译器不通过
    }