语法基础
文件开头 package main #入口函数 import( "fmt" ”math" ) //导入包,fmt为输入输出包
-
用var定义变量,类型可自动识别,或根据上下文推导
var a = "hello" var d = true需要时可手动指定类型需要时可手动指定类型
var b,c int 1,2 f:=float32(e) -
用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++。
-
类型系统:
- Go语言采用静态类型系统,变量必须在声明时指定类型,并且类型在编译时检查。
- C++和Java也是静态类型语言,但Java有更严格的类型检查和类型安全性。
-
指针和引用:
- Go语言支持指针,但限制了指针运算和指针算术。
- C++支持指针,并提供了丰富的指针操作和指针算术。
- Java没有显式指针,但可以通过引用来实现类似的功能。
-
内存管理:
- Go语言使用垃圾回收(Garbage Collection)自动管理内存,开发者无需手动分配和释放内存。
- C++需要手动进行内存管理,使用
new和delete进行内存分配和释放。 - Java也具有垃圾回收,但开发者不能手动控制对象的销毁。
-
并发与并行:
- Go语言在语言级别支持轻量级的并发(Goroutines),使用
go关键字启动并发执行的函数。 - C++和Java通过线程(Thread)实现并发和并行,但需要更多的代码和控制。
- Go语言在语言级别支持轻量级的并发(Goroutines),使用
-
异常处理:
- Go语言使用错误值(Error Values)来处理异常情况,通过返回
error类型作为额外的返回值来表示错误。 - C++使用异常(Exceptions)机制来处理异常情况,可以使用
try-catch块捕获和处理异常。 - Java也使用异常机制,并提供了
try-catch-finally块来处理异常。
- Go语言使用错误值(Error Values)来处理异常情况,通过返回
-
包管理和依赖管理:
-
Go语言有自带的包管理工具(
go get、go mod)来管理代码包和依赖。 -
C++和Java都有各自的包管理器(C++:CMake、Makefile、vcpkg;Java:Maven、Gradle)来管理库和依赖。
-