我的想法
go语言这几年比较流行,然后因为我自己也才大二,所以趁着现在比较多的时间,就尽量的扩大自己的接触面,然后寻找到一个比较适合自己的计算机领域的学习方向,然后博客呢就是相当于一个学习笔记,回头要是用得到就拿出来看看,也给大家参考参考。
Go语言语法规则
package main
import "fmt"
func main() {
fmt.Print("Hello Go")
}
每次学一个新的语言都先hello一下以示敬意,然后有点像Java和python的结合版,比Java简约比python繁杂,二者之间,然后效率上也是比python快比c++慢,刚好可以把二者很好的结合到一块,构建后台、区块链用到的比较多。
package main
一个文件夹下只能有一个main。
func main()
相当于 c++ 的int main()主函数的入口。
变量与数据类型
定义一个变量跟JavaScript比较像但稍有区别
var a = 10 //js
var a int = 10 //golang
var之后跟上变量名称,然后如果想赋值的话紧接着在后面赋值,当然不赋值也是可以的。
变量自动推倒
package main
import "fmt"
func main() {
a:=10
fmt.Println("a = ",a)
fmt.Printf("%T",a) // 打印变量的类型用 %T
}
汲取了python的优势,不需要对变量的类型进行说明但是直接赋值的话它会帮你检测出来是什么类型的变量。
当然如下的定义方式也是可以被接受的。
func main() {
var(
a int = 10
b float32 = 3.14 // 支持自动推倒
a := 10
)
fmt.Println(a,b)
}
printf、println、print区别
当然上面的输出出现了两种,**printf**和**println**很容易理解,一种是java风格输出换行,一种是c语言风格的格式化输出。
常量 const
常量不可修改
const i int = 5
iota枚举package main
import "fmt"
func main() {
const i int = 5
// iota 枚举变量自增
const(
a = iota
b
c
)
fmt.Println(a,b,c)
// 遇到const重置
const d = iota
fmt.Print(d)
}
bool型变量
func main() {
var a bool = true
b := false
c := (1==2)
fmt.Println(a,b,c)
}
三种创建bool类型变量的方式都支持。
整型
package main
import "fmt"
func main() {
var v1 int32
v1 = 123
v2 := 456
fmt.Println(v1,v2)
}
int是有符号的整形,uint是无符号整形,相当于c语言 unsign int
浮点型
package main
import "fmt"
func main() {
var v1 float32
v1 = 123.123
v2 := 456.456
fmt.Println(v1,v2)
}
内存分配
在定义变量的时候会有 int,int32,int64,float,float32,float64。我们用一个包来查看一下所占的字节。
package main
import (
"fmt"
"unsafe"
)
func main() {
var a int
var b int32
var c int64
fmt.Println(unsafe.Sizeof(a),unsafe.Sizeof(b),unsafe.Sizeof(c))
}
结果如下:
有一点比较好,写代码的时候我们不需要去担心某个包未导入,goland会自动给我们导入,比较强大,然后看运行结果,int 8字节这个与我们的计算机的位数有关,我的是64为的自然就是8个字节,如果声明了int32就是4个字节,当然也有int8 2个字节的变量声明,float也是同理。