go语言基础启蒙课 | 青训营笔记

75 阅读3分钟

语法基础

文件开头 package main #入口函数 import( "fmt" ”math" ) //导入包,fmt为输入输出包

  1. 用var定义变量,类型可自动识别,或根据上下文推导

    var a = "hello"  
    var d = true
    

    需要时可手动指定类型需要时可手动指定类型

    var b,c int 1,2
    f:=float32(e)
    
  2. 用const定义常量

    const s string = 'hello'
    const h =500
    

3.打印

    fmt.Println(a,"xxxx")
    fmt.Printf("The value of x is %d\n", 42)
  

4. 判断语句:#if 后无括号 , if 后可定义

   if  num :=9;num<0  {
   } else{ 
       fmt.Println(num,"is my favorite num")
   }   
   
   

5.for循环 for后无括号 continue,break用法同c++

   for j := 7;j<9;j++ {
       ftm.Println(j)
   }

6.switch 后无括号,不需要加break
case后可加任意变量

7.数组 长度固定

        var a {5}int
        

8.切片 长度不固定,长度不够自动扩容

      s:=make([]string ,3)
      s[0] = "a"
      s[1] = "b"
      s[2] = "c"
      
      s = append(s,"d")  //加入元素
      copy(c,s)    //拷贝
      s[2:5]     //e,d,e
      

9.map 无序

      m := make(map[string]int)
      m["one"] = 1
      delete(m,"one")
      r,ok :=m ["unknow"]  是否存在
  
      

10.range遍历

  nums := []int{2,3,4}
  for i,num := range nums{
      ftm.Println("index:",i,"num:",num)
  }
  

11.函数 可以多值返回,用()表示

  func add(a int,b int) int{
  
  }
  

12.指针 *n &n 用法同c++(简化版

13.结构体 struct

 type user struct{
 
 }

14.格式化打印 用%v表示任意类型数据 +v,#v

15.时间处理 time.Now();time.Date()等

16.数字-字符串转化 在strconv包中

 strconv.ParseFloat("1.23",64)
 

17.进程信息。 在os/exec包

其他:指针(Pointers):

使用&运算符获取变量的内存地址。 使用*运算符访问指针指向的值。

var num int = 10
var ptr *int
ptr = &num
fmt.Println(*ptr) // 输出:10

go语言和java,c++的一些区别: 1. 语法简洁性: - Go语言注重简洁性,代码相对更加简单、清晰,语法规则较少。 - C++和Java有更多的语法规则和复杂性,尤其是C++。

  1. 类型系统:

    • Go语言采用静态类型系统,变量必须在声明时指定类型,并且类型在编译时检查。
    • C++和Java也是静态类型语言,但Java有更严格的类型检查和类型安全性。
  2. 指针和引用:

    • Go语言支持指针,但限制了指针运算和指针算术。
    • C++支持指针,并提供了丰富的指针操作和指针算术。
    • Java没有显式指针,但可以通过引用来实现类似的功能。
  3. 内存管理:

    • Go语言使用垃圾回收(Garbage Collection)自动管理内存,开发者无需手动分配和释放内存。
    • C++需要手动进行内存管理,使用newdelete进行内存分配和释放。
    • Java也具有垃圾回收,但开发者不能手动控制对象的销毁。
  4. 并发与并行:

    • Go语言在语言级别支持轻量级的并发(Goroutines),使用go关键字启动并发执行的函数。
    • C++和Java通过线程(Thread)实现并发和并行,但需要更多的代码和控制。
  5. 异常处理:

    • Go语言使用错误值(Error Values)来处理异常情况,通过返回error类型作为额外的返回值来表示错误。
    • C++使用异常(Exceptions)机制来处理异常情况,可以使用try-catch块捕获和处理异常。
    • Java也使用异常机制,并提供了try-catch-finally块来处理异常。
  6. 包管理和依赖管理:

    • Go语言有自带的包管理工具(go getgo mod)来管理代码包和依赖。

    • C++和Java都有各自的包管理器(C++:CMake、Makefile、vcpkg;Java:Maven、Gradle)来管理库和依赖。